Примерно так должно работать:
SELECT number_week,
name,
LAG(number_week, 1, number_week) OVER (PARTITION BY name ORDER BY number_week) as before_last_number_week
FROM t1;
версия sqlfiddle
Используются функции окна Lag()
. «Окно» - это группа записей, которые можно при желании упорядочить. Здесь мы группируем записи по Name
(т.е. две группы / окна) и упорядочиваем их по week_number
. Затем с помощью Lag()
мы выбираем номер недели предыдущей записи (в этом окне). Lag()
может принимать значение по умолчанию, поэтому мы указываем, что значением по умолчанию является текущая запись week_number
.