首页 > 代码库 > sql group by

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 其他 ENDFROM    Table_AGROUP BY CASE country                WHEN 中国     THEN 亚洲                WHEN 印度     THEN 亚洲                WHEN 日本     THEN 亚洲                WHEN 美国     THEN 北美洲                WHEN 加拿大  THEN 北美洲                WHEN 墨西哥  THEN 北美洲        ELSE 其他 END;        
 
 
 

 

sql group by