【发布时间】:2019-09-19 23:09:18
【问题描述】:
我正在尝试找出正确的 SQL 查询来对数据进行分组,但如果至少一个分组的行具有特定值,则还包括一个布尔值 (YES/NO)。
这是一个帮助形象化的具体示例:
假设我有一些这样的数据,可能在一个名为“experiments”的表中,字段如下:
id, experiment_name, user_id, created_at, completed_at
假设我有这些数据:
1, "test experiment", 23, 2019-09-10, NULL
2, "test experiment", 17, 2019-09-15, NULL
3, "test experiment", 23, 2019-09-18, 2019-09-19
4, "test experiment", 23, 2019-09-19, NULL
我想编写一个 SQL 查询,它通过 user_id 执行 group_by 以便我可以进行计数,但还包括一些布尔值,即它们的至少一行是否包含 completed_at 值。
因此,我不能这样做:
SELECT user_id, count(*), completed_at from db group by user_id, completed_at;
结果如下:
user_id count(*) completed_at
23 2 NULL
23 1 2019-09-19
17 1 NULL
我想要一些查询,让我最终得到类似的结果:
user_id count(*) did_complete?
23 3 TRUE
17 1 FALSE
但我对那部分感到困惑。我尝试在这里搜索 SO,但我什至不知道如何将其表述为一个简短的、可搜索的问题。
【问题讨论】: