У меня есть таблица, содержащая идентификаторы сотрудников, идентификатор года, идентификатор клиента и количество продаж. Например:LAG MIN в SQL Analytic
--------------------------------------
id_emp | id_year | sales | client id
--------------------------------------
4 | 1 | 14 | 1
4 | 1 | 10 | 2
4 | 2 | 11 | 1
4 | 2 | 17 | 2
Для сотрудника, я хочу, чтобы получить строки с минимальными продаж в год и минимальных продаж предыдущего года.
Один из запросов, я попытался следующий:
select distinct
id_emp,
id_year,
MIN(sales) OVER(partition by id_emp, id_year) AS min_sales,
LAG(min(sales), 1) OVER(PARTITION BY id_emp, id_year
ORDER BY id_emp, id_year) AS previous
from facts
where id_emp = 4
group by id_emp, id_year, sales;
Я получаю результат:
-------------------------------------
id_emp | id_year | sales | previous
-------------------------------------
4 | 1 | 10 | (null)
4 | 1 | 10 | 10
4 | 2 | 11 | (null)
, но я ожидаю, чтобы получить:
-------------------------------------
id_emp | id_year | sales | previous
-------------------------------------
4 | 1 | 10 | (null)
4 | 2 | 11 | 10
Вы используете Oracle или Microsoft SQL Server? –
Почему вы разделяете по году функцию LAG, если хотите получить предыдущий год? –