oracle分组查询二,row_number() over()函数的使用
查询出一个班所有科目的成绩,使用row_number() over()按照科目分组并按成绩降序排列
SELECT T.SUBJECT, T.SCORE, row_number()OVER(PARTITION BY T.SUBJECT ORDER BY T.SCORE DESC) SEQ FROM JAVA_SCORE T;
删除成绩表中科目重复的数据,仅保留分数最高的一条
DELETE FROM JAVA_SCORE where id in( --执行删除操作 SELECT ID FROM ( SELECT T.ID, T.NAME,T.SUBJECT,T.SCORE ,row_number()OVER(PARTITION BY T.SUBJECT ORDER BY T.SCORE DESC) SEQ FROM JAVA_SCORE T --按照科目分组,并根据分数排序 ) T WHERE T.SEQ > 1 --筛选不是第一名的数据 )