mysql - SQL SUM 和比较

标签 mysql sum

我有两个数据库表:

***aff_purchases***

id | affiliate_id | payout
1  | 12           | 50.00 
2  | 12           | 10.00
3  | 12           | 50.00
4  | 12           | 10.00

***aff_payments***

id | affiliate_id | amount_paid   
8  | 12           | 50.00

我想返回所有联属成员(member) ID 的数组,其中“付款”总额为 50 或高于联属成员(member) ID 的“已支付金额”。

我认为我需要将各列相加然后进行比较,但我很难理解如何进行。请参阅下面我的努力:

SELECT
     (SELECT SUM(amount_paid) FROM exp_cdwd_aff_payments AS pay WHERE pay.affiliate_id = 12) AS 'amount_paid'
     (SELECT SUM(payout) FROM exp_cdwd_aff_purchases AS pur WHERE pur.affiliate_id = 12) AS 'payout'
FROM 
     exp_cdwd_aff_payments AS pay
WHERE 
     payout > amount_paid

最佳答案

这里的一种方法是使用连接两个单独的子查询来查找支出和付款总额。然后,比较每个 affiliate_id 以查看是否满足您的要求。

SELECT
    t1.affiliate_id
FROM
(
    SELECT affiliate_id, SUM(amount_paid) AS amount_paid_total
    FROM aff_payments
    GROUP BY affiliate_id
) t1
LEFT JOIN
(
    SELECT affiliate_id, SUM(payout) AS payout_total
    FROM aff_purchases
    GROUP BY affiliate_id
) t2
    ON t1.affiliate_id = t2.affiliate_id
WHERE COALESCE(t2.payout_total, 0) > t1.amount_paid_total + 50

请注意,已付款但尚未付款的联营公司不会出现在结果集中。

关于mysql - SQL SUM 和比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43632375/

相关文章:

mysql - 从 MySQL 数据库中按最小分数获取行

Mysql查询小数输出左对齐

php - 如何在 php 中使用多个 MySQL 行和值

sql - MySQL Sum 一个字段基于第二个 'common' 字段

python - 从列表中删除数字而不更改总和

mysql - 通过分页根据总和获取用户排名

php - Mysql插入不加入的地方

mysql - 根据分组对 SQL 查询结果进行编号

python - 这是否正常工作 - Python 3 中的斐波那契总和

mysql - 为什么 sum() 查询返回带有更多小数点的结果?