针对城市数据表格,使用SELECT TOP 5、GROUP BY和ORDER BY的SQL问询
针对城市统计数据的TOP 5聚合SQL查询示例
先把你提供的数据集整理成清晰的表格结构(假设数据表名为city_metrics):
| CITY(城市) | QNT(数量) | EXP(支出) | RATE(比率) |
|---|---|---|---|
| LONDON(伦敦) | 60 | 6 | 900 |
| LONDON(伦敦) | 35 | 8 | 337 |
| LONDON(伦敦) | 24 | 6 | 300 |
| BIRMINGHAM(伯明翰) | 22 | 6 | 266 |
| NEWYORK(纽约) | 69 | 19 | 263 |
| ... | ... | ... | ... |
下面是几个符合你要求(包含SELECT TOP 5、GROUP BY、ORDER BY)的SQL查询示例,你可以根据实际业务需求选择:
1. 取总数量(QNT)最高的前5个城市
这个查询会按城市分组,计算每个城市的总数量,然后按总数量降序排序,取前5:
SELECT TOP 5 CITY, SUM(QNT) AS total_quantity FROM city_metrics GROUP BY CITY ORDER BY total_quantity DESC;
2. 取总支出(EXP)最高的前5个城市
如果关注的是各城市的总支出,可以用这个查询:
SELECT TOP 5 CITY, SUM(EXP) AS total_expense FROM city_metrics GROUP BY CITY ORDER BY total_expense DESC;
3. 取平均比率(RATE)最高的前5个城市
要是需要看各城市的平均比率情况,就用聚合函数AVG(),同时保留两位小数让结果更直观:
SELECT TOP 5 CITY, ROUND(AVG(RATE), 2) AS average_rate FROM city_metrics GROUP BY CITY ORDER BY average_rate DESC;
补充说明:不同数据库的TOP语法差异
- 如果你用的是MySQL/PostgreSQL,需要把
SELECT TOP 5换成SELECT ... LIMIT 5 - 如果你用的是Oracle,需要换成
SELECT ... FETCH FIRST 5 ROWS ONLY
内容的提问来源于stack exchange,提问作者senjizu
相关产品推荐
相关产品推荐

