请问一下:有一个表,根据它的id分组查询(分组后的每个id)前4条数据,怎样写sql语句?
3个回答
展开全部
首先,按照id分组后的前4条数据是根据什么字段排序取的前4条数据,假设情况如下。表有两列,一列为id列,一列为排序列,假设为score。即表如下:
id score
1 99
1 98
1 97
1 96
1 95
2 100
2 87
2 96
……
你所要的结果应该是这样的?取按照课程号分组后,取每个课程号的前4个高分的情况。
select t.id,t.score from (select id,score,rank() over (partition by id order by score desc) ranks from 表) t where t.ranks<=4;
以上语句在比如数分数为第三名的有两个同学,那么就会显示两条数据,而不是一条。如果没有这样的要求,可以使用rownum实现。
id score
1 99
1 98
1 97
1 96
1 95
2 100
2 87
2 96
……
你所要的结果应该是这样的?取按照课程号分组后,取每个课程号的前4个高分的情况。
select t.id,t.score from (select id,score,rank() over (partition by id order by score desc) ranks from 表) t where t.ranks<=4;
以上语句在比如数分数为第三名的有两个同学,那么就会显示两条数据,而不是一条。如果没有这样的要求,可以使用rownum实现。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select top(4) *from table group by id
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询