基于特定值的记录组总和

问题描述 投票:0回答:1

我有一张桌子:

发票 描述 成本
123 劳动 125.00
123 商店材料 25.00
124 螺栓 10.00
125 劳动 100.00
125 螺栓 10.00

发票“123”和“125”都有一行描述为“人工”。我需要这些发票所有行的成本总和。

总计
260.00

我在这方面做了很多尝试,而且我已经进行了令人作呕的搜索。但我什至不确定如何将其作为一个简洁的问题提出。任何帮助将不胜感激。

sql mysql aggregate-functions
1个回答
1
投票

使用 2 级聚合:

SELECT SUM(cost) total
FROM (
  SELECT SUM(cost) cost
  FROM tablename
  GROUP BY invoice
  HAVING SUM(description = 'labor') > 0
) t;

或者,使用

SUM()
窗口函数:

SELECT DISTINCT SUM(SUM(cost)) OVER () total
FROM tablename
GROUP BY invoice
HAVING SUM(description = 'labor') > 0;

查看演示

© www.soinside.com 2019 - 2024. All rights reserved.