繁体   English   中英

计算SQL中值的出现

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM