我有两个数据库表:
***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/