@O.Jones замечателен по поводу значений t ie.
Они могут легко привести к неожиданным результатам, особенно возвращая несколько строк результатов в течение года.
One Чтобы избежать этого, нужно четко определить, какую запись следует возвращать, т. е. вы можете захотеть, чтобы первая запись каждого года сортировалась по прибыли. Следующие записи могут иметь такое же значение прибыли, но не должны возвращаться.
В SQL это может выглядеть так:
WITH _profits_in_years
(YEAR, profit) as
(SELECT 1999 AS YEAR, 200 AS Profit FROM dummy UNION ALL
SELECT 1999 AS YEAR, 50 AS Profit FROM dummy UNION ALL
SELECT 2000 AS YEAR, 100 AS Profit FROM dummy UNION ALL
SELECT 2001 AS YEAR, 100 AS Profit FROM dummy UNION ALL
SELECT 2002 AS YEAR, 200 AS Profit FROM dummy UNION ALL
SELECT 2002 AS YEAR, 200 AS Profit FROM dummy UNION ALL
SELECT 2003 AS YEAR, NULL AS Profit FROM dummy
)
SELECT DISTINCT
YEAR,
FIRST_VALUE(Profit) OVER
(PARTITION BY YEAR
ORDER BY PROFIT DESC NULLS LAST)
FROM
_profits_in_years