Я использую приведенное ниже SQL, чтобы выбрать из моей таблицы employee_life_events
последнее событие жизни на вершине стека. Чтобы вытащить вершину стека (самое последнее), мне нужно было вытащить наибольшее значение le_seq_no
для каждого life_event_date
на ssn
. Таким образом, с SQL ниже у меня есть запись о жизни в верху стека для каждого члена (ssn) по дате Теперь мне нужно вытащить самую последнюю дату. Теперь я знаю, что мог бы попытаться создать еще один подзапрос и использовать функцию max (точно не знаю, как это будет цениться), но мне также интересно, есть ли более эффективный способ сделать это с помощью раздела заявление. Добавляя поле в часть partition by
или добавляя поле в часть order by
.
Итак, чтобы подвести итог, мне нужно вытащить вершину стека (самая последняя запись события жизни) из таблицы employee_life_events
по SSN. Самая верхняя запись события жизни стека - это запись (по SSN), которая является самой последней life_event_date
и имеет самую высокую le_seq_no
(для этой конкретной даты).
SELECT *
FROM
(SELECT *
FROM
(SELECT ele1.*,
ROW_NUMBER() OVER (PARTITION BY ele1.SSN, LIFE_EVENT_DATE ORDER BY LIFE_EVENT_DATE DESC, LE_SEQ_NO DESC) as seqnum
FROM EMPLOYEE_LIFE_EVENTS ele1) ele1
WHERE seqnum = 1) ele