SQL分组查询疑问:如何按class聚合得到唯一的平均MPG值
解决GROUP BY后同一class出现多条目的问题
你的问题根源在于GROUP BY子句中同时包含了unrounded_combined_mpg_ft1和class——这会让数据库按不同的mpg值+class组合分组,同一个class会因为对应不同的原始mpg值被拆分成多个分组,最终输出多条重复class的记录。
只需调整GROUP BY和ORDER BY子句即可实现每个class仅返回一条平均mpg值:
-- 查询特定车型(轿车、SUV等)的平均燃油效率 SELECT avg(unrounded_combined_mpg_ft1) AS MPG, class FROM fuel$ WHERE fuel_type_1 <> 'Electricity' GROUP BY class -- 仅按class分组,聚合同一class的所有记录 ORDER BY MPG DESC -- 按计算出的平均MPG排序,而非原始mpg值
关键修正说明:
- 移除
GROUP BY中的unrounded_combined_mpg_ft1,只保留class,确保同一class的所有数据被归为一组计算平均值 - 将
ORDER BY改为按聚合后的MPG字段排序,符合你“燃油效率最高”的查询需求(原始mpg值在分组后已失去排序意义)
内容的提问来源于stack exchange,提问作者Kaya Gore
相关产品推荐
相关产品推荐

