Группировать, возвращая одинаковые строки в sql

У меня есть следующие столбцы, поступающие в мой вывод из запроса

select 
person_number,
event_id,
question,
answer,
seq,
event_attempt_id,
INTERACTION_CREATION_DATE
from learning_table


Person_number           Event_id            question            answer          seq  event_attempt_id       INTERACTION_CREATION_DATE
6                       123             what is your name       Reena           78      1                       11-jan-2020
6                       123             what is your name       Freid           67      2                       29-jan-2020
6                       123             what is your name       Heera           89      3                       24-jan-2020

Теперь я хочу, чтобы на выходе отображалась только максимальная строка взаимодействия_создания_даты.

i.e. 
Person_number           Event_id            question            answer          seq  event_attempt_id       INTERACTION_CREATION_DATE
6                       123             what is your name       Freid           67      2                       29-jan-2020

когда я использую приведенный ниже запрос, он все еще возвращает все строки

select 
person_number,
event_id,
question,
answer,
seq,
max(INTERACTION_CREATION_DATE)
from learning_table

group by person_number,
event_id,
question,
answer,
seq

Да, потому что значения Answer и Seq различны. Группы никогда не становятся меньше, чем отдельные значения всех столбцов в GROUP BY.

Caius Jard 29.03.2022 21:30

как я могу настроить этот запрос, чтобы получить только последнюю строку даты взаимодействия?

SSA_Tech124 29.03.2022 21:32

Из связанного дубликата: SELECT * FROM learning_table ORDER BY interaction_creation_date DESC FETCH FIRST ROW ONLY

MT0 29.03.2022 21:34
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
3
22
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Как правило, в наши дни мы делаем это «нужна строка в группе, которая имеет максимальное значение блабла вместе со всеми другими ее значениями» с помощью вложенной оконной функции:

with x as (
  select 
    person_number,
    event_id,
    question,
    answer,
    seq,
    ROW_NUMBER() OVER(PARTITION BY person_number, event_id,  question ORDER BY INTERACTION_CREATION_DATE DESC) rn
  from learning_table
) 
SELECT * FROM x WHERE rn = 1
    

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