如何在select top group byy 子句中使用top

1208人阅读
转载自:/database/468.html &
在日常工作中,经常要查询分组的前几名.oracle中可以通过row_num来支持查询,暂时不支持row_num.那么如何来完成这个需求呢?
表中的数据:
| Person | Group
| Bob&&& | 1&&&& | 32& |
| Jill&& | 1&&&& | 34& |
| Shawn& | 1&&&& | 42& |
| Jake&& | 2&&&& | 29& |
| Paul&& | 2&&&& | 36& |
| Laura& | 2&&&& | 39& |
期望的结果:
| Shawn& | 1&&&& | 42& |
| Jill&& | 1&&&& | 34& |
| Laura& | 2&&&& | 39& |
| Paul&& | 2&&&& | 36& |
& &方式一:借鉴oracle中row_num的思想,在sql中增加伪列.
@num := 0, @group
person, `group`, age
person, `group`, age,
&&&&&&@num := if(@group
= `group`, @num + 1, 1)
as row_number,
&&&&&&@group
:= `group`
by `Group`, Age
desc, person
x.row_number &= 2;
方式二:利用关联子查询
a.person, a.group, a.age
FROM person
AS a WHERE
COUNT(*) FROM
b.group = a.group
AND b.age &= a.age) &= 2
BY a.group
ASC, a.age DESC
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:213313次
积分:2050
积分:2050
排名:第16933名
原创:53篇
转载:90篇
(1)(2)(1)(8)(1)(2)(3)(2)(1)(9)(2)(3)(13)(4)(3)(5)(3)(1)(5)(7)(4)(2)(16)请教SQL中怎么GROUP BY 与TOP - Sql Server当前位置:& &&&请教SQL中怎么GROUP BY 与TOP请教SQL中怎么GROUP BY 与TOP&&网友分享于:&&浏览:146次请问SQL中如何GROUP BY 与TOP一个表中的数据ID
11:11:11需求是根据时间倒序,取出每个ID,nickname 的前两条数据。------解决方案--------------------SQL code
AS ( SELECT
rn = ROW_NUMBER() OVER ( PARTITION BY id ORDER BY nickname )
------解决方案--------------------SQL code
select * from
(select no=row_number() over(partition by id order by addtime desc),* from tb)t
where no&3
------解决方案--------------------SQL code
distinct b.*
cross apply
(select top 2 * from tb where id=a.id order by addtime desc)b
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有

我要回帖

更多关于 select top group by 的文章

 

随机推荐