gpt4 book ai didi

sql - 合计值并找到前 x 值

转载 作者:行者123 更新时间:2023-12-04 05:47:54 25 4
gpt4 key购买 nike

情况:

我有一个包含销售记录的数据库,每条记录都有一个 ID (PK)、ProductCode、Year、Month、SalesVolume。

作为用户,我将指定年份,因此如果我指定 1980,我将在数据库中查询与该年份对应的所有记录。

我正在尝试创建一个查询来汇总指定年份的销售量,然后选择前 5 个销售量值。

到目前为止,我所收集的是以某种方式执行上述操作,然后选择前 5 个销售量值,按降序排列,然后选择前 5 个,但就我所知

请注意,一年内会有多种产品的销售量:

ID,     Product Code, Year, Month, SalesVolume
23041 121 1980 1 21
23042 121 1980 2 960
23043 121 1980 3 939
23044 121 1980 4 927
23045 121 1980 5 931
23046 121 1980 6 950
23047 121 1980 7 975
23048 121 1980 8 994
23049 121 1980 9 994
23050 121 1980 10 968
23051 121 1980 11 918
23052 121 1980 12 854
23425 122 1980 1 1002
23426 122 1980 2 1032
23427 122 1980 3 1090
23428 122 1980 4 1062
23429 122 1980 5 1010
23430 122 1980 6 1103
23431 122 1980 7 1214
23432 122 1980 8 1122
23433 122 1980 9 1019
23434 122 1980 10 1181
23435 122 1980 11 1343
23436 122 1980 12 1180

预期输出:

1980年
Product Code, SalesVolume
121 , (total SalesVolume of the 12 months)
122 , (total SalesVolume of the 12 months)

最佳答案

这是您可以做的 - 将给定年份的每个项目的销售额总计,对它们进行排名,然后选择排名前 5 的项目。

SELECT *
FROM (
SELECT "Product Code",
SUM(SalesVolume) as total,
RANK() OVER (ORDER BY SUM(SalesVolume) DESC) as rnk
FROM YourTable
WHERE Year = 1980
GROUP BY "Product Code"
) A
WHERE rnk <= 5

如果您想选择所有年份的前 5 名,您也可以这样做:
SELECT *
FROM (
SELECT Year,
"Product Code",
SUM(SalesVolume) as total,
RANK() OVER (PARTITION BY Year ORDER BY SUM(SalesVolume) DESC) as rnk
FROM YourTable
GROUP BY Year, "Product Code"
) A
WHERE rnk <= 5

关于sql - 合计值并找到前 x 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10438525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com