test1
1 1 1
2 1 2
3 1 3
4 1 45 2 5
6 2 5
7 2 5
8 2 5
想按第二列进行分组,取出每组的前三行数据,谢谢
1 1 1
2 1 2
3 1 3
4 1 45 2 5
6 2 5
7 2 5
8 2 5
想按第二列进行分组,取出每组的前三行数据,谢谢
解决方案 »
- ORA-27101: shared memory realm does not exist
- Oracle数据库缓冲区工作原理
- ORACLE 9i 一台机器,想把数据放在C同时复制到D盘该怎么做能实现?
- 高分请教,MAX两不同类型列,如何处理
- 一个sql的问题, 在不同的机器上就报错, 很奇怪
- 求助,将SqlServer转换成为Oracle的一条Sql语句
- ORACLE 的session问题,立刻给分
- 请问如何将NVARCHAR2转换为VARCHAR2
- 求一个sql语句:我需要把表里的数据转成insert语句插入一张新的表。
- 请问oracle8.0,9.0哪个好一些,100分
- 请教一个月份查询的问题
- PL/SQL中SELECT INTO无记录的情况,你觉得哪种处理方法好?
from test1 t) where rn<=3
CREATE TABLE T(ID1 NUMBER,ID2 NUMBER,ID3 NUMBER);
INSERT INTO T VALUES(1,1,1);
INSERT INTO T VALUES(2,1,2);
INSERT INTO T VALUES(3,1,3);
INSERT INTO T VALUES(4,1,4);
INSERT INTO T VALUES(5,2,5);
INSERT INTO T VALUES(6,2,6);
INSERT INTO T VALUES(7,2,6);
INSERT INTO T VALUES(8,2,6);
commit;--语句
SELECT ID1,ID2,ID3 FROM
(SELECT T.*,ROW_NUMBER() OVER (PARTITION BY ID2 ORDER BY ID1) RN FROM T)
WHERE RN<=3;--结果
ID1 ID2 ID3
1 1 1
2 1 2
3 1 3
5 2 5
6 2 6
7 2 6
SQL codeselect * from (select t.*,row_number()over( partition by 第2列 order by 第1列) as rn
from test1 t) where rn <=3
还是好好看看oracle的分析函数吧!