У меня есть следующий Postgres SQL-запрос:SQL GROUP_BY дополнительный столбец
SELECT movement_id, counter, MAX(standardized_output) AS standardized_output
FROM "outputs"
WHERE "outputs"."user_id" = 1 AND "outputs"."movement_id" = 1 AND (counter in (1,3,5))
GROUP BY movement_id, counter
Это хорошо производит три ряда для меня.
Однако я также хочу потянуть в соответствующую колонку done_at
. Добавление done_at
в SELECT
и GROUP_BY
заканчивается тем, что возвращает сотни строк; Я просто хочу, чтобы три строки возвращали вышеуказанный запрос с соответствующим полем done_at
для выходной строки, которая была найдена функцией MAX
.
Это не обязательно возвращает значение '' done_at' где standardized_output' находится на максимальном значении , – Patrick
@ Patrick, похоже, работает правильно для меня? –
@BenSmith Для каждой комбинации '(movement_id, counter)' вы получите максимальное значение 'standardized_output' и' done_at'. Если эти максимальные значения происходят из одной и той же строки, то это сработает, но что, если 'done_at' - какое-то низкое значение, где' standardized_output' максимален? Таким образом, это может работать для некоторых, возможно, даже для большинства или всех ваших данных, но также может возвращать значения для 'standardized_output' и' done_at' в комбинации, которая не предоставляется одной строкой. – Patrick