Как выбрать наибольшее значение, если несгруппированный столбец зависит от сгруппированного столбца?

Я новичок в Redshift. У меня есть две таблицы, ticket_booking и ticket_review, отношение двух таблиц одно - много. Что в сочетании выглядит так:

Как выбрать наибольшее значение, если несгруппированный столбец зависит от сгруппированного столбца?

Результат, который я ищу (я хочу получить наибольшее число для идентификатора ticket_booking): Как выбрать наибольшее значение, если несгруппированный столбец зависит от сгруппированного столбца?

Я попытался получить желаемый результат, используя группу по команде, чтобы помочь отдельным записям. См. сценарий ниже:

select b.id, r.id, max(r.number) as revision_number
from dw.ticket_review as r, dw.ticket_booking as b
where r.ticket_booking_id = b.id
group by b.id

Однако я получаю сообщение об ошибке столбец "r.id" должен присутствовать в предложении GROUP BY или использоваться в агрегатной функции.. Если я это сделаю, я получу результат первой картинки. Я пробовал разные подходы, упомянутые в разных вопросах, но ни один из них не помог мне в моей ситуации. Любая помощь будет глубоко оценена! :)

Красное смещение или Постгрес? Это два очень разных продукта баз данных.

a_horse_with_no_name 16.03.2022 20:14

Красное смещение, но разве красное смещение не основано на Postgres? по крайней мере я так понял.

Giancarlo 16.03.2022 20:20

Нет, он никогда не был «основан» на Postgres. Amazon использовал только парсер SQL, все остальное по сути другое. И даже если они использовали больше этого, оба существенно разошлись.

a_horse_with_no_name 16.03.2022 20:21

Ох! хорошо, да, это имеет смысл, я снял бирку. Спасибо за пояснение! :)

Giancarlo 16.03.2022 20:22

Вы получаете сообщение об ошибке, потому что вам нужны и b.id, и r.id в предложении GROUP BY. Например. GROUP BY b.id, r.id

Ricardo Francois 16.03.2022 21:25

Привет, Рикардо, к сожалению, если я включу r.id в предложение GROUP BY, то я получу результат, показанный на первом рисунке. Я думаю, что подзапрос - это способ, но я еще не могу понять это. Спасибо за комментарий :)

Giancarlo 16.03.2022 21:45
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
6
28
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Для каждого бронирования назначьте порядок номер строки из самого высокого отзыва, а затем выберите только первые строки:

select booking_id, ticket_review, number
  from (select b.id as booking_id, r.id as ticket_review, r.number,
               row_number() over (partition by b.id order by r.id desc) rn
          from dw.ticket_review as r, dw.ticket_booking as b
         where r.ticket_booking_id = b.id) x
 where rn = 1;

Kombajn Я не могу отблагодарить вас в достаточной мере. Это сработало блестяще!

Giancarlo 16.03.2022 22:35

Другие вопросы по теме