[英]Counting occurrences of value in SQL
假设我们有一张诺贝尔表(年份,主题,获胜者)。
我想得到一个结果,该结果将返回年份,该年化学奖项数量栏,该年物理奖项数量栏。
你会怎么做?
SELECT yr, count(subject='Physics'), count(subject='Chemistry') FROM nobel GROUP BY yr
不起作用。
您的查询不起作用,因为条件返回值0或1,并且count
计算非NULL值。
尝试使用sum
而不是count
:
SELECT yr, sum(subject='Physics'), sum(subject='Chemistry')
FROM nobel
GROUP BY yr
顺便说一下,并不是所有的数据库都将条件表达式视为整数。 标准语法为:
select yr, sum(case when subject = 'Physics' then 1 else 0 end) as NumPhysics,
sum(case when subject = 'Chemistry' then 1 else 0 end) as NumChemistry
from nobel
group by yr
您还可以通过执行以下操作在多行上获得相同的信息:
select yr, subject, count(*)
from Nobel
where subject in ('Physics', 'Chemistry')
group by yr, subject
这行不行吗?
select yr, subject, count(*) awards
from nobel
where subject in ('physics', 'chemistry')
group by yr, subject
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.