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

本文介绍如何在SQL中使用row_number()over()函数进行分组并按条件排序,通过实例说明其执行顺序与WHERE、GROUP BY和ORDER BY的关系。针对学生表数据,展示了如何找出重复姓名和性别的记录。
115

被折叠的 条评论
为什么被折叠?



