繁体   English   中英

如何在 SQL 中按另一列对两列求和并按类别分组

[英]How to sum two columns by another column and group by category in SQL

我有一个如下表:

类别 项目1 Item1 的孩子 日期 星期
一种 3个 2个 1个 1个
一种 3个 7 1个 1个
一种 4个 1个 2个 1个
4个 2个 1个 1个
5个 6个 2个 1个
一种 2个 2个 1个 2个
一种 1个 3个 2个 2个
2个 2个 1个 2个
2个 1个 2个 2个

Item1 列有一个子项,有时会生成具有相同日期、周和类别的 2 行。 如何使用 SQL 按周和类别对 item1 和 item1 的子项的数量求和,但忽略 item1 中的重复数据以获得如下数据:

类别 项目1 Item1 的孩子 星期
一种 7 10 1个
9 8个 1个
一种 3个 5个 2个
4个 3个 2个
Select
    ColumnA,
    ColumnB,
    (ColumnA + ColumnB) As Total
From 
   Table_Name
Group By Column_name  

您可以GROUP BY categoryweek ,然后使用SUM聚合并只获取item1DISTINCT值:

SELECT category,
       SUM(DISTINCT item1) AS item1,
       SUM(child_of_item1) AS child_of_item1,
       week
FROM   table_name
GROUP BY category, week
ORDER BY category, week;

其中,对于示例数据:

CREATE TABLE table_name (Category, Item1, Child_of_Item1, "Date", Week) AS
SELECT 'A', 3, 2, 1, 1 FROM DUAL UNION ALL
SELECT 'A', 3, 7, 1, 1 FROM DUAL UNION ALL
SELECT 'A', 4, 1, 2, 1 FROM DUAL UNION ALL
SELECT 'B', 4, 2, 1, 1 FROM DUAL UNION ALL
SELECT 'B', 5, 6, 2, 1 FROM DUAL UNION ALL
SELECT 'A', 2, 2, 1, 2 FROM DUAL UNION ALL
SELECT 'A', 1, 3, 2, 2 FROM DUAL UNION ALL
SELECT 'B', 2, 2, 1, 2 FROM DUAL UNION ALL
SELECT 'B', 2, 1, 2, 2 FROM DUAL;

输出:

类别 项目1 CHILD_OF_ITEM1 星期
一种 7 10 1个
一种 3个 5个 2个
9 8个 1个
2个 3个 2个

db<> 在这里摆弄

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM