sql group by

Posted LinVan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;

        
 
 
 

 

以上是关于sql group by的主要内容,如果未能解决你的问题,请参考以下文章

T-SQL-Sum over Partition by 与 group by 组合

带有 Group By 子句的 SQL 逗号分隔行

sql中得group by 用法?

sql中 group by排序

SQL sort by desc 不适用于 group by

sql中group by 是啥意思啊?请教谢谢