黑马程序员技术交流社区

标题: 关于SQL一道练习题,想了好久想不出来,求帮助! [打印本页]

作者: 盘晟    时间: 2013-5-10 18:42
标题: 关于SQL一道练习题,想了好久想不出来,求帮助!
本帖最后由 盘晟 于 2013-5-12 15:22 编辑

Table为T_SCORES:


如何在SQL查询中,输入代码能得到下面的结果?

Name
湖人10
奇才20
拜仁12

select distinct name,()as 胜,()as负 from t_scores,括号里面应该怎么输才能统计出3个队的胜负数?


作者: 许庭洲    时间: 2013-5-10 21:25
select Name,
Sum{
case Score
when  N'胜'  then  1
else  0
end
} as 胜,
Sum{
case  Score
when  N'负'  then  1
else  0
end
} as 负
from T_Scores
group by Name
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    输出结果:
    Name        胜           负
    拜仁          1             2
    湖人          1             0
    奇才          2             0
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


作者: 郎吉祥    时间: 2013-5-10 22:11
这个问题。你在下一个视频里就能找到答案了……我也复习复习
首先把胜负结果进行Sum,这里用到和C#里边很像的switch-case   
sum{case Score
when  N'胜'  then  1
else  0
end}
汉字前边加N,
还要起个列别名 as  胜
那么就基本上完成了。Name那里加不加distinct都可以。最后来个分组,group by  Name  哇哦。快忘干净了……
作者: 盘晟    时间: 2013-5-10 23:30
额,谢谢你!我看了下一个视频了,看了老师说的那个以后,才恍然大悟:
select name,
sum(case
when score='胜' then 1
else 0
end
)as '胜'

sum(case
when score='负' then 1
else 0
end
)as '负'
from t_scores
group by name

函数太多,自己做的时候,sum一下想不起来,看的时候很好理解,自己做的时候就蒙了!笔记中有些函数也没记到,2008中的汉字貌视不用加N也没出错呢!
不过还是感谢你,能够忙里抽空过来帮我!


作者: 盘晟    时间: 2013-5-10 23:32
许庭洲 发表于 2013-5-10 21:25
select Name,
Sum{
case Score

这么详细,谢谢!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2