【发布时间】:2021-12-27 20:55:07
【问题描述】:
我有一个名为 purchase 的表格,其中包含以下列:名称、金额、城市、日期。
我想返回金额总和并按金额总和最多的城市排序,并比较两个日期范围。
这是一个小提琴:http://sqlfiddle.com/#!9/6b2017/6
我可以按照 sum(amount) desc (period 1) 的顺序获得第一组城市及其 sum(amount):
select distinct city, sum(amount) as total
from purchases
where date between '2020-07-01' and '2020-10-31'
group by city
order by sum(amount) desc
limit 3
上面的查询返回城市:塔尔萨、纽约、芝加哥
但我也想获得前 3 个月的相同查询,但使用上一个查询中返回的相同城市,类似这样,但就像我提到的,我希望它只在一个查询中返回(第 2 期)
select city, sum(amount) as total
from purchases
where city in ('Tulsa', 'New York', 'Chicago')
and date between '2020-03-01' and '2020-06-31'
group by city
希望返回城市(按照它们在第一个查询中的顺序),每个日期范围的总和(数量),所以理论上:
塔尔萨时期 1:总和(金额) 塔尔萨期 2:总和(金额) 纽约期间 1:总和(金额) 纽约期 2:总和(金额) 芝加哥期 1:总和(金额) 芝加哥期 2:总和(金额)
感谢任何帮助
【问题讨论】:
-
SELECT DISTINCT 结合 GROUP BY 挑眉...
标签: mysql sql group-by compare conditional-aggregation