如果值相同,如何求和

时间:2019-05-09 00:54:24

标签: sql

我查询到SUM并计数我的表,但是我遇到了麻烦,我想在COUNT后对SUM列名求和。 这是我的桌子...

id  no_reg  name        date       qty
1   REG01   T-212-BS    2019-05-03  1
2   REG01   T-212-BS    2019-05-03  1
3   REG01   T-212-BS    2019-05-03  1
4   REG01   T-212-BA    2019-05-03  1
5   REG02   T-111-AA    2019-05-04  1
6   REG03   T-111-AB    2019-05-04  1

我创建查询。...

SELECT     no_reg, COUNT(DISTINCT name) AS Name_qty, date, SUM(qty) AS qty
FROM         part
GROUP BY no_reg, name, date, qty

执行后的查询结果...

no_reg   Name_qty   date        qty
REG01     1         2019-05-03  1
REG01     1         2019-05-03  3
REG02     1         2019-05-04  1
REG03     1         2019-05-04  1

但是,我想要这样的结果...

no_reg   Name_qty   date        qty
REG01     2         2019-05-03  4
REG02     1         2019-05-04  1
REG03     1         2019-05-04  1

2 个答案:

答案 0 :(得分:2)

即使您在不同的语句中使用名称,也无需按名称分组。

SELECT     no_reg, COUNT(DISTINCT name) AS Name_qty, date, SUM(qty) AS qty
FROM         part
GROUP BY no_reg, date

答案 1 :(得分:1)

您要按qty进行分组,因此任何不具有相同qty的行都将被分别聚合。由于qty用于聚合函数中,因此您可以将其从分组中删除,并且应该可以得到预期的结果

SELECT no_reg, COUNT(DISTINCT name) AS Name_qty, date, SUM(qty) AS qty
FROM part
GROUP BY no_reg, date

编辑

我还注意到该名称包含在分组依据中。您也可以删除它,因为它已用于计数汇总