SQL分组查询(Group By)如何获取TOP 5结果?
嘿,这事儿简单!你已经有了分组汇总的查询,要取前5条的话,不同数据库的语法稍微有点不一样,我给你列几个常用的情况,你对着自己用的数据库选就行:
首先,先确认下你原来的基础查询大概是这样的(把你的表名换成实际的表名就行):
SELECT CustomerName, SUM(SaleAmount) AS `销售额(单位:百万)` FROM 你的表名 GROUP BY CustomerName
接下来加限制条件:
如果你用的是 MySQL、MariaDB 或者 PostgreSQL
直接在末尾加LIMIT 5,另外建议加上排序——不然“前5条”的顺序是随机的,一般咱们都想拿销售额最高的前5个对吧?所以加上ORDER BY:
SELECT CustomerName, SUM(SaleAmount) AS `销售额(单位:百万)` FROM 你的表名 GROUP BY CustomerName ORDER BY `销售额(单位:百万)` DESC -- DESC表示从高到低排序,去掉就是从低到高 LIMIT 5;
如果你用的是 SQL Server
用TOP 5放在SELECT后面就行,同样记得加排序:
SELECT TOP 5 CustomerName, SUM(SaleAmount) AS [销售额(单位:百万)] FROM 你的表名 GROUP BY CustomerName ORDER BY [销售额(单位:百万)] DESC;
如果你用的是 Oracle 12c 及以上版本
用FETCH FIRST 5 ROWS ONLY,排序也不能少:
SELECT CustomerName, SUM(SaleAmount) AS "销售额(单位:百万)" FROM 你的表名 GROUP BY CustomerName ORDER BY "销售额(单位:百万)" DESC FETCH FIRST 5 ROWS ONLY;
要是你用的是其他小众数据库,告诉我一声我再给你调整~
内容的提问来源于stack exchange,提问作者D Phillips
相关产品推荐
相关产品推荐

