gpt4 book ai didi

从 2 个表的总和计算的 SQL

转载 作者:行者123 更新时间:2023-12-04 01:09:50 26 4
gpt4 key购买 nike

我有 2 个表 Salesreturn 我有两个查询来获取特定月份的每天销售总额和返回总额。结果是这样的。

SELECT strftime('%m/%d', Date) as valDay, SUM(TotalPrice) as valTotal FROM Sales WHERE strftime('%m', Date) ='12' GROUP BY valDay;

结果

valDay  valTotal
12/01 50.0
12/02 50.0
12/04 50.0
12/05 120.0
12/06 160.0
12/07 30.0
12/08 80.0
12/09 50.0

第二个查询是

SELECT strftime('%m/%d', Date) as valDay, SUM(TotalPrice) as valTotal FROM return WHERE strftime('%m', Date) ='12' GROUP BY valDay;

结果

valDay  valTotal
12/01 10.0
12/05 100.0
12/08 20.0

我想从当天的销售额中扣除每天的返回总额。结果应该是这样的,忽略括号 btw

valDay  valTotal
12/01 40.0 (50-10)
12/02 50.0
12/04 50.0
12/05 20.0 (120 - 100)
12/06 160.0
12/07 30.0
12/08 60.0 (80 - 20)
12/09 50.0

是否可以使用单个查询?

最佳答案

您应该使用 UNION ALL 来获取包含您想要的 2 个表的所有行的结果集,然后仅聚合一次:

SELECT strftime('%m/%d', Date) valDay, SUM(TotalPrice) valTotal
FROM (
SELECT Date, TotalPrice
FROM Sales
WHERE strftime('%m', Date) ='12'
UNION ALL
SELECT Date, -TotalPrice -- here you get the negative TotalPrice of the column
FROM return
WHERE strftime('%m', Date) ='12'
)
GROUP BY valDay

如果您的数据扩展到超过 1 年,并且您想要的只是所有年份中所有 12 月的结果,那么此查询将有效。

但是如果您想要特定年份的结果,那么您还应该在 WHERE 子句中包含该年份,例如:

WHERE strftime('%Y/%m', Date) = '2020/12'

关于从 2 个表的总和计算的 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65216672/

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