首页 > 数据库技术 > 详细

sql group by

时间:2016-08-31 12:04:12      阅读:228      评论:0      收藏:0      [点我收藏+]

group by实例

实例一

数据表:

姓名 科目 分数
张三 语文 80
张三 数学 98
张三 英语 65
李四 语文 70
李四 数学 80
李四 英语 90

期望查询结果:

姓名 语文 数学 英语
张三 80 98 65
李四 70 80 90

create table testScore    
(    
   tid int primary key identity(1,1),    
   tname varchar(30) null,    
   ttype varchar(10) null,    
   tscor int null   
)    
go    
---插入数据    
insert into testScore values (张三,语文,80)    
insert into testScore values (张三,数学,98)    
insert into testScore values (张三,英语,65)    
insert into testScore values (李四,语文,70)    
insert into testScore values (李四,数学,80)    
insert into testScore values (李四,英语,90)    


select tname as 姓名 ,     
max(case ttype when 语文 then tscor else 0 end) 语文,     
max(case ttype when 数学 then tscor else 0 end) 数学,     
max(case ttype when 英语 then tscor else 0 end) 英语     
from testScore     
group by tname

 

实例二

数据表:

dataStr result

2016-05-09 胜

2016-05-09 胜

2016-05-09 负

2016-05-10 胜

2016-05-10 负

2016-05-10 负

期望查询结果:

日期 胜数 负数

2016-05-09 2 1

2016-05-10 1 2

-- ----------------------------
-- Table structure for `score`
-- ----------------------------
DROP TABLE IF EXISTS `score`;
CREATE TABLE `score` (
  `dataStr` varchar(255) DEFAULT NULL,
  `result` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of score
-- ----------------------------
INSERT INTO `score` VALUES (2016-05-09, );
INSERT INTO `score` VALUES (2016-05-09, );
INSERT INTO `score` VALUES (2016-05-09, );
INSERT INTO `score` VALUES (2016-05-10, );
INSERT INTO `score` VALUES (2016-05-10, );
INSERT INTO `score` VALUES (2016-05-10, );

SELECT U.dataStr AS 日期,
SUM(result=)AS 胜数,
SUM(result=)AS 负数
FROM score AS U WHERE 1=1 GROUP BY dataStr

实例三

数据表
国家(country)  人口(population)
中国 600
美国 100
加拿大 100
英国 200
法国 300
日本 250
德国 200
墨西哥 50
印度 250
 期望查询结果:

  人口
亚洲 1100
北美洲 250
其他 700
 
            
SELECT  SUM(population),
        CASE country
                WHEN 中国     THEN 亚洲
                WHEN 印度     THEN 亚洲
                WHEN 日本     THEN 亚洲
                WHEN 美国     THEN 北美洲
                WHEN 加拿大  THEN 北美洲
                WHEN 墨西哥  THEN 北美洲
        ELSE 其他 END
FROM    Table_A
GROUP BY CASE country
                WHEN 中国     THEN 亚洲
                WHEN 印度     THEN 亚洲
                WHEN 日本     THEN 亚洲
                WHEN 美国     THEN 北美洲
                WHEN 加拿大  THEN 北美洲
                WHEN 墨西哥  THEN 北美洲
        ELSE 其他 END;

        
 
 
 

 

sql group by

原文:http://www.cnblogs.com/linvan/p/5825239.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!