sql group by

group by實例ide

實例一spa

數據表:code

姓名 科目 分數
張三 語文 80
張三 數學 98
張三 英語 65
李四 語文 70
李四 數學 80
李四 英語 90blog

指望查詢結果:數學

姓名 語文 數學 英語
張三 80 98 65
李四 70 80 90it

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

 

實例二io

數據表:table

dataStr resultclass

2016-05-09 勝test

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;

        
相關文章
相關標籤/搜索