SQL如何聚合2020-2021年数据取Top25参与者总费用?
问题根因
你的SQL存在两处逻辑错误,直接导致无法得到跨年度累计聚合的排名结果:
- 分组字段冗余:
GROUP BY子句中错误加入了cost_amount字段,分组粒度被细化到单条费用记录层级,无法按参与者维度合并2020、2021两年的费用数据,最终返回的是拆分后的单年/单条记录费用值 - 排序字段错误:
ORDER BY子句使用原始字段cost_amount排序,而非聚合计算得到的累计费用字段,排序逻辑没有按照两年总费用维度执行
修正后可直接运行的SQL
SELECT TOP 25 participant_ID, SUM(cost_amount) AS total_cost FROM cost_table WHERE cost_year BETWEEN '2020' AND '2021' GROUP BY participant_ID ORDER BY total_cost DESC
逻辑说明
- 保留原有时间范围筛选条件,仅统计2020-2021年周期内的费用记录
- 分组仅保留
participant_ID维度,会自动对同一参与者下两年的所有费用记录求和,得到跨年度累计总费用 - 排序改用聚合生成的
total_cost字段做降序排列,返回的前25条结果即为累计总费用最高的参与者名单
内容的提问来源于stack exchange,提问作者waldo18
相关产品推荐
相关产品推荐

