首页 新闻 会员 周边

这题应该怎么写 求解答

0
[已解决问题] 解决于 2018-02-14 13:53
select Classid as 班级的id, COUNT(*)as 班级男生的人数 from 表 where gender=1 group by Classid   (错误)
 
注:因为where是要求gender为男 但是系统是先执行where再执行select的
也就是说如果一个班没有男生全部是女生那么查询出来的结果就中就不会显示这个没有男生的那个班级id。
 
题1 请查询出每个班级的ID 和 班级中男生的人数 如果该班没有男生则显示男生为人数为零
一切至于创新的主页 一切至于创新 | 初学一级 | 园豆:182
提问于:2018-02-12 00:55
< >
分享
最佳答案
0

Table:

sql:

SELECT  ClassID,COUNT(case when Sex='' then 1 else null end) FROM Student  GROUP BY ClassID

Result:

 

既然是先执行的where再执行的select,那就不用where用case好了,case就是在select里的,可以很好的解决你的问题。

奖励园豆:5
顾星河 | 大侠五级 |园豆:7173 | 2018-02-12 09:38

流弊

bingco | 园豆:213 (菜鸟二级) | 2018-02-12 23:42
其他回答(3)
0
WITH a AS(
    SELECT DISTINCT
        ClassId
    FROM
        Students WITH(nolock)
) SELECT
    a.ClassId,
    isnull(COUNT(b.ClassId), 0)
FROM
    a
LEFT JOIN Students b WITH(nolock) ON a.ClassId = b.ClassId
AND b.gender = 1
GROUP BY
    a.ClassId
鼠标滚轮 | 园豆:202 (菜鸟二级) | 2018-02-12 09:42
0

SELECT Stu.ClassID,Count(SELECT * FROM Student  AS Stu2 Where Stu2.ClassID = Stu.ClassID AND Stu2.Gender = 1) FROM Student  AS Stu GROUP BY ClassID

潇潇@暮雨 | 园豆:256 (菜鸟二级) | 2018-02-12 10:54
0

student 表 左联自己

Moko_o | 园豆:214 (菜鸟二级) | 2018-02-12 15:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册