【问题标题】:PHP / SQL Group Rows and Sum ColumnsPHP / SQL 组行和总和列
【发布时间】:2014-09-01 20:33:33
【问题描述】:

我有一个数据库,我需要将用户分组在一起,然后将发票金额合计为一个总数。我似乎无法找到一种优雅的方法来做到这一点,我尝试通过一个 IF 语句使用每个用户 ID 迭代一个 while 循环,但这种方法并不实用,因为以后添加的每个新用户都需要添加一个新的 if 语句。

SQL 示例

UserID  Invoice  InvoiceAMT
 419       1       20.00
 419       2       30.99
 420       3       30.00
 421       4        1.00
 419       5       60.00

我要返回的是

UserID   Total Invoices   Total Amount
 419           3            110.99
 420           1             30.00
 421           1              1.00

【问题讨论】:

标签: mysql sql


【解决方案1】:

GROUP BYSUM() 一起使用

SELECT UserID, COUNT(Invoice) `Total Invoices`, SUM(InvoiceAMT) `Total Amount`
FROM table
GROUP BY UserID

带有空格的列名不好,所以避免使用它们。例如,您应该使用 TotalInvoicesTotal_Invoices 而不是 Total Invoices

【讨论】:

  • 你确定SUM 适合Total Invoices
  • @JaredFarrish 不,不是,我认为 count 更合适。
  • 我确实尝试过使用聚合函数,但是即使如上所述,我的代码仍然为每一行生成一行,而不是将所有相同的用户 ID 组合在一起。
  • @Seth 你用过GROUP BY UserID吗?
  • 我做了,但它仍然返回;169-1-4.0000 169-1-4.0000 169-1-4.0000 169-1-4.5000 169-1-4.5000 169-2-9.0000 169-1- 15.0000 169-1-15.0000 169-1-37.5000 169-1-40.0000 169-1-89.0000 169-1-89.0000 169-1-89.0000 169-1-89.0000 169-2-172660000 1069-9-3 534.0000
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多