我使用以下查询:
SELECT mgap_growth
FROM mgap_orders
WHERE account_manager_id = '159795'
GROUP BY mgap_ska_report_category
mgap_growth是一个具有相同金额的列,仅根据mgap_ska_report_category而不同,这是分组的原因。现在我已经规范了每个类别的个别金额,我如何使用SUM计算他们的总数?
以下是数据的屏幕截图:
我只需要每个类别的增长量的总和,而不是所有mgap_growth记录的增量,但我不确定分组后如何进行SUM。
谢谢!
编辑其他查询:
让我再提出另一个问题:我们知道每个类别只需要一次SUM,但如果我需要GROUP BY CUSTOMER怎么办?我刚刚发现数据中有多个客户,每个客户每个增长记录都有重复,但因类别而异。我真的需要使用两个分组,一个用于分类,单个输出和增长量,然后另一个用于客户。
这是描述数据的图像:
答案 0 :(得分:2)
如果我理解正确,您需要对子查询中的结果求和。
SELECT SUM(mgap_growth) AS total_mgap_growth
FROM (SELECT mgap_growth
from mgap_orders
WHERE account_manager_id = '159795'
GROUP BY mgap_ska_report_category) AS x
答案 1 :(得分:0)
这应该显示该特定客户经理的每个类别的总增长:
SELECT sum(mgap_growth) AS Growth, mgap_ska_report_category as Category
FROM mgap_orders
WHERE account_manager_id = '159795'
GROUP BY mgap_ska_report_category
不是考虑在分组之后进行SUM ,而是可以在一个语句中一起完成这两个。你已经拥有了99%的成就。
要在评论中回答您的其他问题,您可以添加另一列进行分组。您在逐组中列出它们的顺序是重要的部分。总体分组排在第一位。因此,假设“客户”是客户列名称,您可以这样做:
SELECT mgap_ska_report_category as Category, Customer, sum(mgap_growth) AS Growth
FROM mgap_orders
WHERE account_manager_id = '159795'
GROUP BY mgap_ska_report_category, customer
WITH ROLLUP
请注意,更改顶行中的SELECT列只是为了美观,您可以按任意顺序放置它们并获得相同的数据,但这将是最容易阅读的。
这显示了该特定客户经理按类别划分的每位客户的增长情况。
再次编辑以添加WITH ROLLUP。这将为您提供每个类别的总计。尝试使用WITH ROLLUP和不使用WITH ROLLUP来查看它是如何改变的。