我发现了一些类似的问题,但都有不同的要求,并且不知道如何将它们更改为我的需要。 所以我有这张桌子:
Name Value Year
------------------------
John 5 2021
John 10 2022
John 6 2023
Kat 20 2021
Kat 10 2022
Kat 12 2023
预期结果:
Name Total LastYear
----------------------------
Kat 42 12
John 21 6
当然前两个简单的部分是:
select name, sum(value) as Total from names group by name order by sum(value) desc
但是我怎样才能得到最后一个呢? 我尝试了 union all、subselect(从年份 = 2023 的名称中选择值),但没有出现我想要的结果。 (2023将被变量ofc取代)
感谢您的帮助
您可以使用窗口函数在一个选择中查找不同分组的总和和最大值:
SELECT DISTINCT Name,
SUM(Value) OVER (PARTITION BY Name) AS Total,
MAX(Year) OVER ()
FROM names;