Начиная с конечной цели, я хочу, чтобы набор результатов выглядел следующим образом:
name | completed
_________________
Josh | T
Tom | T
Harry | F
У меня есть таблица, которая выглядит так:
id | name | status
__________________
1 Josh complete
2 Josh errored
3 Tom generating
4 Tom complete
5 Harry pending
Как видно из набора результатов, я хочу знать для каждого человека, был ли у него когда-либо статус завершенного.
Я думаю, что хочу перебрать каждую строку в проверке предложения group by status = 'complete', но я изо всех сил пытаюсь это сделать.


Вы можете сделать агрегацию:
select name, coalesce(max(case when status = 'complete' then T end), 'F') as completed
from table t
group by name;
@ДжошХейл. . . max() даст вам T значение, если status = 'complete' найдено, иначе он вернет null, поскольку это агрегированный запрос, поэтому потребуется функция агрегирования, если столбец (status) отсутствует с предложением group by.
Хорошо, это имеет смысл. Спасибо
Спасибо. Просто чтобы я понял, почему мы используем здесь
max?