2016-02-26 67 views
0

計數我有一個表: -Postgres-獲取元素GROUP BY的

id  value 
1   1 
1   2 
1   1 
1   4 
2   1 
2   3 
2   2 
3   1 
4   2 

我想要得到的ID和各自具有價值= 1計,即用於上表中,輸出應如下: -

id  count 
1   2 
2   1 
3   1 
4   0 

由於,ID = 1具有1,ID 2項= 2具有1個條目的1,類似地編號3具有1個條目,編號4具有0條目。

我得到使用以下闕以下的輸出: -

select id,count(value) 
from table                
where value=1 
group by id 
order by count(value); 

id  count 
1   2 
2   1 
3   1 

我想要得到的4, 0進入爲好。我怎樣才能做到這一點?

回答

6

試試這個

select id,sum(case when value ='1' then 1 else 0 end) as val 
from table  
group by id 
order by id; 
+0

感謝你的回答。 '總結(當值='1',然後1其他0結束的情況下)'做什麼? – PythonEnthusiast

+1

當值爲1時,則返回1,否則返回0。 –

0

它是刪除行ID = 4

嘗試以下where子句:

select id,sum(case when value = 1 then 1 else 0 end) as count 
from table    
group by id 
order by sum(case when value = 1 then 1 else 0 end); 
1

你試試這個SQL查詢

select id,COUNT(CASE WHEN value = '1' THEN 1 END) count 
from tablename  
group by id;