按组别显示分组中的前10行

Tai*_*lam 1 sql sql-server group-by

select COMMUNITY_AREA_NAME, count(COMMUNITY_AREA_NAME) as Number_Of_Schools
from CHICAGO_PUBLIC_SCHOOLS group by COMMUNITY_AREA_NAME order by 2 desc 
Run Code Online (Sandbox Code Playgroud)

我编写了上面的sql查询来获取结果集,该结果集解释了拥有最多学校的社区名称,结果就是这样但是如何才能显示前10个列?我使用'限制10'.但它显示出一些错误.

在此输入图像描述

select Top 10 COMMUNITY_AREA_NAME, count(COMMUNITY_AREA_NAME) as Number_Of_Schools
from CHICAGO_PUBLIC_SCHOOLS group by COMMUNITY_AREA_NAME order by 2 desc 
Limit 10;
Run Code Online (Sandbox Code Playgroud)

错误:

Msg 102, Level 15, State 1, Line 3
Incorrect syntax near 'Limit'.
Run Code Online (Sandbox Code Playgroud)

PSK*_*PSK 5

对于你的情况,简单地说TOP 10应该工作.

select TOP 10 COMMUNITY_AREA_NAME, count(COMMUNITY_AREA_NAME) as Number_Of_Schools
from CHICAGO_PUBLIC_SCHOOLS 
group by COMMUNITY_AREA_NAME 
order by 2 desc
Run Code Online (Sandbox Code Playgroud)

LIMITSQL Server不直接支持,如果您使用的SQLServer 2012+话可以使用OFFSET,FETCH它的工作方式类似LIMIT.你可以在这里阅读更多相关信息

对于旧版本的SQL Server,您可以使用它ROW_NUMBER()来实现相同的功能.