Я пытаюсь определить правильный запрос SQL для группировки данных, но также включить логическое значение (ДА / НЕТ), если хотя бы для одной сгруппированных строк имеет определенное значение.
Вот конкретный пример, который поможет визуализировать:
Допустим, у меня есть такие данные, возможно, в таблице под названием "эксперименты" с такими полями:
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-запрос, который делает group_by user_id, чтобы я мог иметь счетчик, но также включает в себя некоторое логическое значение того, включала ли хотя бы одна из их строкЗначение complete_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 здесь, но я не могу понять, как даже сформулировать это как короткий, доступный для поиска вопрос.