考虑这张表:
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
我看到了一个可能的解决方案,通过 JOINing table 本身,但这似乎是一种 hack,而且效率很低。我遇到了窗口函数,不确定它们是否适用于这个问题。