A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 林其响 中级黑马   /  2012-4-17 09:39  /  2590 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

有一张表T_Scores,记录比赛成绩  sDate      sName       Score
2008-8-8     拜仁         胜
2008-8-9     奇才         胜
2008-8-9     湖人         胜
2008-8-10   拜仁         负
2008-8-8     拜仁         负
2008-8-12   奇才         胜


要求输出下面的格式:
Name 胜  负
拜仁 1   2
湖人 1   0
奇才 2   0


SELECT sname,
SUM(CASE
WHEN score='胜' THEN 1   ELSE 0   END) AS 胜 ,
SUM(CASE                        
WHEN score='负' THEN 1 ELSE 0 END) AS 负
FROM test3
GROUP BY sname

这段查询语句中
SUM(CASE
WHEN score='胜' THEN 1   ELSE 0   END) AS 胜  sum函数是如何统计的?原理是怎么实现的? 我是认为当score='负' 的时候在这断代码中sum也会统计可是SQL语句是如何不统计这个呢?

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

2 个回复

倒序浏览
SUM(CASE
WHEN score='胜' THEN 1   ELSE 0   END) AS
当胜的时候 得到的结果是1  当负时候得到结果是0
X+0还不是等于X吗
所以他只是记录胜时候的次数

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
就是 Score 为 胜 的个数和。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马