SQLite 3:对列求和并显示最后一个值

问题描述 投票:0回答:1

我发现了一些类似的问题,但都有不同的要求,并且不知道如何将它们更改为我的需要。 所以我有这张桌子:

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取代)

感谢您的帮助

python sql database sqlite
1个回答
0
投票

您可以使用窗口函数在一个选择中查找不同分组的总和和最大值:

SELECT DISTINCT Name,
                SUM(Value) OVER (PARTITION BY Name) AS Total,
                MAX(Year) OVER ()
FROM names;
© www.soinside.com 2019 - 2024. All rights reserved.