2017-10-24 13 views
1

ビルディングと呼ばれるテーブルがある場合。私が欲しいもの条件付きSQLカウント

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

は、ビル名や各建物の中に20以上の能力を持っている部屋の総数をプリントアウトすることです。私は正しい軌道に乗って行く

Bldg Total 
    SCEN 1 
    JBHT 2 

アム:だから、見えるようになっている

Select Bldg, Count(Capacity > 20) as Total from Buildings Group By Total Desc 

答えて

1

他の答えは、この問題のために過度に複雑に見えます。解決策は、かなり単純です:ここでは

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

はフィドルです:http://sqlfiddle.com/#!9/308a6/1

+0

OPの要件であれば、少し違いがあります。[デモ](http://rextester.com/OEYS61090)** – lad2025

+0

@ lad2025非常に巧妙な解決策です。それが要件であればOPとあなたの例にそれを含めてください。 – zambonee

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

+0

または 'キャパ> 20' – demo

+1

を持つあなたの答えが正しいだろうので、私は質問を変えました。 –