我有一张表,其中包含以下销售和库存数据(哦):
category sales oh item_num
Clothes 12 10 1
Clothes 11 10 1
Clothes 10 10 1
Clothes 5 10 1
Clothes 8 10 1
Clothes 4 10 1
Clothes 23 10 2
Clothes 5 10 2
Clothes 20 10 2
Clothes 5 10 2
Clothes 13 10 2
Clothes 9 10 2
Food 6 25 3
Food 8 25 3
Food 7 25 3
Food 14 25 3
我正在尝试查询此表以按类别获取sales和oh列的总和:
SELECT category, SUM(sales) AS sales, SUM(oh) AS oh
FROM data
GROUP BY category
但是,问题是我需要SUM(oh)
只对不同的项目求和,而SUM(sales)
要对所有值求和。所以结果应该是:
category sales oh
Clothes 125 20
Food 35 25
我尝试了SUM(DISTINCT oh)
,但这仅适用于不同的oh值,而不适用于不同的项目。我真的需要像SUM(DISTINCT(item_num) oh)
这样的东西。
我尝试了各种窗口功能,但无法提出解决方案。有人知道如何在唯一密钥上返回这种总和吗?
答案 0 :(得分:1)
这就是我要做的:
INCLUDE
基本上分阶段解决问题。首先,将商品按类别和商品编号分组以获得销售总和,然后按类别将商品分组和总计以获得总和。
结果:
SELECT category, SUM(sales) AS sales, SUM(oh) AS oh
FROM (
SELECT category, SUM(sales) AS sales, oh
FROM data
GROUP BY category, item_num, oh
) ttl
GROUP BY category;
编辑:包含的简化查询。