mysql 基于特定值的记录组总和

vhipe2zx  于 2023-04-28  发布在  Mysql
关注(0)|答案(1)|浏览(98)

我有一张table:
| 发票|描述|成本|
| --------------|--------------|--------------|
| 一百二十三|劳动|一百二十五|
| 一百二十三|车间材料|25点|
| 一百二十四|螺栓|十点|
| 一百二十五|劳动|一百|
| 一百二十五|螺栓|十点|
发票“123”和“125”都有一行描述为“人工”。我需要这些发票的所有行的成本总和。
| 总计|
| --------------|
| 二百六十|
我在这方面做了许多尝试,我已经找得令人作呕了。但我甚至不知道如何把它作为一个简洁的问题。任何帮助将不胜感激。

xytpbqjk

xytpbqjk1#

使用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;

参见demo

相关问题