gpt4 book ai didi

sql - 根据聚合查询中的基础行返回列

转载 作者:行者123 更新时间:2023-12-02 21:12:04 27 4
gpt4 key购买 nike

考虑这个表:

 comment_id | vote | user_id 
------------+------+---------
79507 | 1 | 351501
79507 | 2 | 533594
79544 | 1 | 648703
79544 | 1 | 533594
79544 | 2 | 790789
79545 | 1 | 351501

此聚合查询返回每个 comment_idvote 列的总和:

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

但是,如果任何底层分组行满足条件,我希望返回一个附加列。在这种情况下,当且仅当任何聚合行具有给定的 user_id(本例中为 user_id 351501)时,voted 列才应为 true:

 comment_id | sum | voted
------------+-----+-------
79507 | 3 | t
79544 | 4 | f
79545 | 1 | t

我看到了一种可能的解决方案,即通过 JOINing 表本身来实现,但这似乎是一种黑客行为,而且效率非常低。我遇到了窗口函数,不确定它们是否适用于这个问题。

最佳答案

使用聚合函数bool_or() :

SELECT comment_id, SUM(vote_up) AS sume_vote
,bool_or(user_id = 351501) AS voted
FROM votes
GROUP BY 1
ORDER BY 1;

关于sql - 根据聚合查询中的基础行返回列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16802050/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com