SQL时出现的case问题
我有一个名为“候选者”的表格,其中包括“数学分数”和“语言分数”,反映了候选者在各自测试中的分数。我需要SQL时出现的case问题,sql,postgresql,case,Sql,Postgresql,Case,我有一个名为“候选者”的表格,其中包括“数学分数”和“语言分数”,反映了候选者在各自测试中的分数。我需要 显示数学和语言成绩至少为60分的学生人数(多才多艺的大学考生)以及数学和语言成绩均低于40分的学生人数 这些测试(糟糕的候选者)。不包括首选联系人为空的学生。我的问题是: select count(case when score_math>=60 and score_language>=60 then 1 else 0 end) as versatile_candidates,
显示数学和语言成绩至少为60分的学生人数(多才多艺的大学考生)以及数学和语言成绩均低于40分的学生人数 这些测试(糟糕的候选者)。不包括首选联系人为空的学生。我的问题是:
select
count(case when score_math>=60 and score_language>=60 then 1 else 0
end) as versatile_candidates,
count(case when score_math<40 and score_language<40 then 1 else 0 end) as
poor_candidates
from candidate
where preferred_contact is not null
选择
计数(当数学分数>=60,语言分数>=60时,则为1,否则为0
(完)作为多才多艺的大学候选人,
计数(当分数\u mathcount()
不考虑NULL
值时的情况。将对所有其他非NULL值进行计数
您可能希望将其替换为SUM()
COUNT()
不考虑NULL
值。所有其他非NULL值都将被计算
您可能希望将其替换为SUM()
您很接近-您获得所有候选对象总数的原因是COUNT()
将0
与1
相同(以及任何其他非NULL
值)。由于值只能是0
或1
,因此COUNT()
将返回所有候选对象的总数
由于您已经默认了与0
不匹配的案例,因此只需将COUNT()
更改为SUM()
:
选择总和(数学分数>=60时的情况)
语言得分>=60,则为1
其他0
(完)作为多才多艺的大学候选人,
,求和(数学分数<40时的情况)
语言得分<40分,则为1分
其他0
(完)作为差劲的候选人
来自候选人
其中首选_联系人不为空
你很接近-你得到所有候选人总数的原因是COUNT()
将0
计数为1
(以及任何其他非NULL
值),因为这些值只能是0
或1
,所以你的计数()
将返回所有候选人的总数
由于您已经默认了与0
不匹配的案例,因此只需将COUNT()
更改为SUM()
:
选择总和(数学分数>=60时的情况)
语言得分>=60,则为1
其他0
(完)作为多才多艺的大学候选人,
,求和(数学分数<40时的情况)
语言得分<40分,则为1分
其他0
(完)作为差劲的候选人
来自候选人
其中首选_联系人不为空
使用SUM()
不使用COUNT()
或不使用其他0
使用SUM()
不使用COUNT()
或不使用else 0
对。应该使用SUM()而不是COUNT()。非常感谢,对两个答案进行投票!对。应该使用SUM()而不是COUNT()。非常感谢,对两个答案进行投票!
Select Sum(Case When score_math >= 60
And score_language >= 60 Then 1
Else 0
End) As versatile_candidates
, Sum(Case When score_math < 40
And score_language < 40 Then 1
Else 0
End) As poor_candidates
From candidate
Where preferred_contact Is Not Null