row_number() over()
row_number() over()分组排序功能:
在使用 row_number() over()函数时候,over()里头的分组以及排序的执行晚于 where 、group by、 order by 的执行。
环境准备
CREATE TABLE STUDENT (
ID VARCHAR2(2) NULL ,
NAME VARCHAR2(3) NULL ,
SEX CHAR(1) NULL
)
INSERT INTO STUDENT VALUES ('3', 'b', '0');
INSERT INTO STUDENT VALUES ('4', 's', '1');
INSERT INTO STUDENT VALUES ('5', 'a', '1');
INSERT INTO STUDENT VALUES ('1', 'a', '1');
INSERT INTO STUDENT VALUES ('6', 'a', '1');
INSERT INTO STUDENT VALUES ('7', 'a', '0');
- select * from student order by id
-
查询出 name 和sex 重复的数据,并显示 全部字段值
--第一步:查询使用row_number() over() 分组并排序 select t.*,row_number() over(partition by name,sex order by id) rn from student t
--第二步
select * from(
select t.*,row_number() over(partition by name,sex order by id) rn from student t
) where rn >1