我有一个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