【问题标题】:How to sum columns from two related tables如何对两个相关表中的列求和
【发布时间】:2019-09-17 07:20:19
【问题描述】:

我有两张桌子。 Invoicesinvoice_items。我试图为每个客户获取total_payment 的总和和quantity 的总和。我试过这个查询:

SELECT client_id,
sum(total_amount), sum(it.quantity) as days_hired
FROM  `invoices` `iv`
  join invoice_items it on  it.invoice_id=iv.invoice_id
group by client_id, it.invoice_id

但对于 client_id 14,我得到的总付款为 1908 而不是 636。看起来此列的总和对于每个 invoie_item 都会重复。任何帮助将不胜感激。

invoices

invoice_id    client_id    total_payment
    36        13           530
    38        14           636


invoice_items

invoice_id    user_id      quantity     
36            2            2
38            3            2
38            4            2
38            5            2

预期输出:

13     530       2
14     636       6

【问题讨论】:

  • 请发布您的预期输出?
  • 能否也更新发票和发票项目表?

标签: mysql group-by aggregate


【解决方案1】:

你可以试试下面-

SELECT client_id, sum(total_amount) as toal_amount, sum(it.quantity) as total_quantity
FROM  `invoices` `iv`
join
(
 select invoice_id,sum(quantity) as quantity from invoice_items group by invoice_id
)it on  it.invoice_id=iv.invoice_id
group by client_id, it.invoice_id

【讨论】:

  • 这似乎有效。我会用更多的发票进行测试。不过有一个小修复。 sum(quantity) 应该是 sum(quantity) 作为数量。
【解决方案2】:

试试:

select i.*, ii.total_quantity
from invoices i
join (
  select invoice_id, sum(quantity) total_quantity from invoice_items
  group by invoice_id
) ii on i.invoice_id = ii.invoice_id

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-03
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多