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 --筛选不是第一名的数据
)

 

posted @ 2021-01-26 10:57  叶落kiss  阅读(203)  评论(0编辑  收藏  举报