group by实例
实例一
数据表:
姓名 科目 分数
张三 语文 80 张三 数学 98 张三 英语 65 李四 语文 70 李四 数学 80 李四 英语 90期望查询结果:
姓名 语文 数学 英语
张三 80 98 65 李四 70 80 90create 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 '其他' ENDFROM Table_AGROUP BY CASE country WHEN '中国' THEN '亚洲' WHEN '印度' THEN '亚洲' WHEN '日本' THEN '亚洲' WHEN '美国' THEN '北美洲' WHEN '加拿大' THEN '北美洲' WHEN '墨西哥' THEN '北美洲' ELSE '其他' END;