mysql - 两个 mysql 表列的总和

标签 mysql join sum

我有两个 mysql 表:

table: loan
--------------------------------------------------------
 id | advance_id | loan_amount | deposit_amount | date
--------------------------------------------------------
 1 | 22556678 | 5000 | 0 | 2015-02-06
 2 | 22556678 | 5000 | 0 | 2015-02-07
--------------------------------------------------------

table: advance
--------------------------------------------------------
id | advance_id | advance_amount | purpose | date
--------------------------------------------------------
 1 | 22556678 | 20000 | purchase | 2015-01-30
 2 | 22556678 | 10000 | purchase | 2015-01-31

我想从表中获取“loan_amount”的总和:loan 以及从表中获取“advance_amount”的总和:advance 在一个由 INNER JOIN 连接的 mysql 查询中。

如何求两张表各列的总和?

SELECT 
  a.advance_id,
  SUM(a.advance_amount) AS adv_amount,
  a.purpose,
  a.date,
  SUM(l.loan_amount) AS loan_amount 
FROM
  advance AS a 
  INNER JOIN loan AS l 
    ON a.advance_id = l.advance_id 
GROUP BY a.advance_id 
HAVING SUM(l.loan_amount) - SUM(l.deposit_amount) > 0 

最佳答案

您可以将查询重写为

SELECT 
  a.advance_id,
  SUM(a.advance_amount) AS adv_amount,
  a.purpose,
  a.date,
  l.loan_amount 
FROM
  advance AS a 
  INNER JOIN 
  (
    SELECT advance_id,SUM(deposit_amount) AS loan_amount
    FROM loan
    GROUP BY advance_id
    HAVING SUM(loan_amount) - SUM(deposit_amount) > 0 
  )  AS l USING(advance_id)
GROUP BY a.advance_id 

DEMO

关于mysql - 两个 mysql 表列的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29726674/

相关文章:

sql - 使用 JOIN 而不是 HAVING(COUNT > n) 来提高性能

mysql - 获取查询mysql中的最小记录

MySQL 对多列中的行值进行计数

SQL:添加两个求和字段并将求和值与另一个字段值进行比较

c# - 不正确的字符串值 : '\xEF\xBF\xBD' for column

mysql - 错误 1129 : Host '' blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'

php - 当参数字符集为 utf-8 时,在 php 中使用 addslashes 是否安全?

php - 从日期中减去 8 天 + 秒

perl - DBIx::Class - 使用预取获取用作条件的所有关系?

php - 一个表列中的 MySQL join/sum 值与另一个表中的计数值