sql group by

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;

        
 
 
 
原文地址:https://www.cnblogs.com/linvan/p/5825239.html