次の表を検討してください。
comment_id | vote | user_id
------------+------+---------
79507 | 1 | 351501
79507 | 2 | 533594
79544 | 1 | 648703
79544 | 1 | 533594
79544 | 2 | 790789
79545 | 1 | 351501
vote
この集計クエリは、すべての列の合計を返しますcomment_id
。
SELECT comment_id, SUM(vote_up)
FROM votes
GROUP BY comment_id
ORDER BY comment_id;
comment_id | sum
------------+-----
79507 | 3
79544 | 4
79545 | 1
ただし、基になるグループ化された行のいずれかが条件を満たす場合は、追加の列が返されるようにしたいと考えています。この場合、voted
集計された行のいずれかに特定の user_id (この例では user_id 351501) がある場合に限り、列は true になります。
comment_id | sum | voted
------------+-----+-------
79507 | 3 | t
79544 | 4 | f
79545 | 1 | t
テーブル自体をJOINすることで解決策が考えられますが、それはハックのようで、非常に非効率的です。ウィンドウ関数に出くわしましたが、この問題に当てはまるかどうかわかりません。