gpt4 book ai didi

mysql - 在 SQL 中连接一个表中的两个查询

转载 作者:行者123 更新时间:2023-11-30 00:21:28 25 4
gpt4 key购买 nike

我有 2 个疑问

SELECT date_format(payments.paymentdate, '%m'), 
SUM(payments.amount)
FROM payments
WHERE payments.`customerNumber` IN
(
SELECT customers.`customerNumber`
FROM customers
WHERE customers.`country` = 'USA'
and customers.`customerNumber` = payments.`customerNumber`
)
GROUP BY date_format(payments.paymentdate, '%m')

并且

SELECT date_format( payments.paymentdate, '%m') , 
SUM( payments.amount )
FROM payments
GROUP BY date_format( payments.paymentdate, '%m')

他们返回结果,所以一切正常。但是,我需要获得包含 3 列的结果 - date_format( payments. paymentdate, '%m') SUM( payments.amount ) (其中国家/地区为美国) SUM( payments.amount) (包含所有国家/地区)。

我尝试了以下查询

SELECT date_format( payments.paymentdate, '%m') , 
SUM(payments.amount ),
(
SELECT SUM(payments.amount)
FROM payments
WHERE payments.`customerNumber` IN
(
SELECT customers.`customerNumber`
FROM customers WHERE customers.`country` = 'USA'
and customers.`customerNumber` = payments.`customerNumber`
)
)
FROM payments
GROUP BY date_format( payments.paymentdate, '%m')

但我有来自美国的付款总额,而不是按月计算的总额。

我该如何修复它?

谢谢!

最佳答案

您需要所有付款的总和以及部分付款的总和。

这对于“if”语句来说是完美的。我仍然认为您迟早会想要“%Y-%m”,而不是混淆 2014 年 4 月和 2015 年 4 月。

SELECT date_format(payments.paymentdate, '%m') as month, SUM(payments.amount) as amount_total, sum(if(customers.country='USA', payments.amount, 0)) as amount_USA
FROM payments
inner join customers on customers.customerNumber = payments.customerNumber
GROUP BY date_format(payments.paymentdate, '%m')

关于mysql - 在 SQL 中连接一个表中的两个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23198083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com