SQL计数条件

时间:2017-10-24 16:24:51

标签: sql

如果我有一张叫做“建筑物”的桌子。

c(...)

我想要的是打印出Bldg名称以及每栋建筑物中容量超过20的房间总数。所以看起来应该是这样的:

a 4 75097 72607 72607 62572 
b NA 
c 5 113116 5372 5372 11767
d 4 11767 85822 85822 82080 82080 77055 

我是否走在正确的轨道上:

 Room_No    Bldg Capacity 
    112     SCEN   23
    242     JBHT   25
    542     SCEN    4
    324     JBHT   24

2 个答案:

答案 0 :(得分:2)

您可以使用CASE

Select Bldg, Count(CASE WHEN Capacity > 20 THEN 1 END) as Total 
from Buildings 
Group By Bldg
ORDER BY Total DESC;

如果您使用的是Postgresql,则可以将其重写为:

Select Bldg, Count(1) FILTER(WHERE Capacity>20) as Total 
from Buildings 
Group By Bldg
ORDER BY Total DESC;

<强> Rextester Demo

答案 1 :(得分:1)

对于这个问题,其他答案似乎过于复杂。解决方案很简单:

SELECT Bldg, COUNT(*) AS count 
FROM Buildings 
WHERE Capacity > 20 
GROUP BY Bldg

这是小提琴:http://sqlfiddle.com/#!9/308a6/1