gpt4 book ai didi

sql - 使用 CASE WHEN 从不同的行获取不同的值

转载 作者:行者123 更新时间:2023-11-29 12:03:05 25 4
gpt4 key购买 nike

我有一个数据集,其中用户有 2 个 Action ,一个有用的 Action 和一个无用的 Action :

user_id | action_id | useful
1 | 3 | True
1 | 4 | False
2 | 5 | True

我想要一个显示用户 ID 的数据集,以及他们在同一行上执行的有用和无用操作的 ID。像这样:

user_id | useful_action_id | not_useful_action_id
1 | 3 | 4
2 | 5 | NULL

我试过以下方法:

SELECT
user_id,
case when useful = True then action_id else null end,
case when useful = False then action_id else null end
FROM actions
GROUP BY user_id

但有人告诉我:

Error running query: column "useful" must appear in the `GROUP BY` clause or be used in an aggregate function

但是不,我特别不希望“有用”出现在 GROUP BY 中,对吧?我只希望它按 user_id

分组

最佳答案

您正在使用 GROUP BY,但未执行聚合。看起来您正在尝试条件聚合并且您非常接近。您只需要使用聚合函数,如下所示:

SELECT
user_id,
max(case when useful = True then action_id end) AS useful_action_id,
max(case when useful = False then action_id end) AS not_useful_action_id
FROM actions
GROUP BY user_id

关于sql - 使用 CASE WHEN 从不同的行获取不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45112480/

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