我有一個Postges數據庫一個很長的桌子和3列,像這樣:SQL GROUP BY重複行
s_id | c_id | a_id
1 | 1 | 2
1 | 1 | 3
1 | 3 | 15
2 | 1 | 2
2 | 2 | 23
3 | 1 | 2
3 | 3 | 16
我有一個查詢發現已C_ID 1和3的所有s_ids,返回他們和他們的計數:
SELECT s_id, COUNT(s_id) as matching_clusters
FROM test
WHERE c_id IN (1,3)
GROUP BY s_id HAVING COUNT(c_id) >= 2
ORDER BY matching_clusters DESC
我得到的回覆是以下幾點:
s_id | matching_clusters
1 | 3
3 | 2
但是,我只想計算重複C_ID一次,這樣的結果在這裏應該是
s_id | matching_clusters
1 | 2
3 | 2
任何建議如何做到這一點?我認爲我可以將DISTINCT
放入COUNT命令中,但這不起作用。我可以用不同的c_id在表本身上加入結果,但我不想重新運行查詢,因爲在這個表上運行查詢是非常昂貴的計算明智的。
你指的是具有COUNT(DISTINCT C_ID)沒有工作? – jarlh 2015-02-05 13:08:36