【问题标题】:How to find SUM of all rows which have unique value如何查找具有唯一值的所有行的总和
【发布时间】:2016-02-05 22:02:12
【问题描述】:

我正在制作财务脚本,每个月底我都需要所有发票的最终总和。如果发票有 4 行或 10 行,每行包含全部金额。

所以我需要找到不同的发票编号,然后将它们的价值相加。

SELECT finalprice 
FROM invoices 
GROUP BY invoicenumber;

最终价格

   87.26
  153.72
   10.56
  979.20
  136.20
   47.10
  112.62

当我尝试使用时,这给了我每一个独特的行,但不会对它们求和:

SELECT sum(finalprice) 
FROM invoices 
GROUP BY invoicenumber;

总和(最终价格)

  349.04
 1690.92
   10.56
11750.4
  544.8
  141.3
 1351.44

这对唯一 invoicenumber 中的每一行求和,但我需要对每个唯一发票值求和。

【问题讨论】:

  • 我们需要原始样本数据和期望输出。现在您只向我们展示您当前的结果。请阅读stackoverflow.com/help/how-to-ask这里是START的好地方
  • 谢谢这是我的第一个问题
  • 没问题。更新问题时留言,以便我收到通知。只需添加@JuanCarlosOropeza

标签: mysql group-by sum


【解决方案1】:

只需创建一个派生表即可删除重复项

我相信你只想要一个总价值,所以不需要分组。

SELECT SUM(finalprice) 
FROM (SELECT DISTINCT invoicenumber, finalprice
      FROM invoices) t;

你也可以使用你的版本

SELECT SUM(finalprice) 
FROM (SELECT finalprice 
      FROM invoices 
      GROUP BY invoicenumber) t;

注意:派生表需要别名,所以我只使用t

【讨论】:

  • 不,它只显示每张不同发票的所有值,但不要显示它们的 SUM。我只需要一个结果,所有的 SUM。
  • 不,不起作用,两者都给出相同的结果 SUM(finalprice) 61161.51,但实数必须是 34450.38.. :(
  • 正如我所说,在我的评论中提供源数据和期望输出。否则你的要求不明确
【解决方案2】:

最简单的解决方法是除以count()

SELECT sum(finalprice)/count(*)
FROM invoices 
GROUP BY invoicenumber

【讨论】:

    猜你喜欢
    • 2020-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-19
    相关资源
    最近更新 更多