例如我有下一张 table
我需要根据事件和操作选择 ID 和新列
- 1 个组 - ID 有事件 1 和 2
- 2 个组 - ID 包含全部 3 个事件,name_3 的操作为“否”
- 3 个组 - ID 包含全部 3 个事件,name_3 的操作为"is"
所需的输出:
最佳答案
我们可以尝试使用条件聚合方法:
SELECT
user_id,
CASE WHEN COUNT(DISTINCT event) = 3 AND
MAX(CASE WHEN event = 'name_3' THEN action END) = 'no' THEN 2
WHEN COUNT(DISTINCT event) = 3 AND
MAX(CASE WHEN event = 'name_3' THEN action END) = 'yes' THEN 3
WHEN COUNT(DISTINCT event) = 2 AND
COUNT(CASE WHEN event = 'name_1' THEN 1 END) > 0 AND
COUNT(CASE WHEN event = 'name_2' THEN 1 END) > 0 THEN 1 END AS "group"
FROM yourTable
GROUP BY user_id
ORDER BY user_id;
请注意,这种方法非常高效,因为它只需要对整个表进行一次遍历。
关于sql - 根据具有特定值的 ID 创建自定义组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77052722/