helianthus33
--语法形式:    ROW_NUMBER() OVER(PARTITION BY COL1 ORDER BY COL2) 
--解释:     根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)
--常用的使用场景: 取每个学科的前3名
--
1.创建测试表 create table #score ( name varchar(20), subject varchar(20), score int ) --2.插入测试数据 insert into #score(name,subject,score) values(\'张三\',\'语文\',98) insert into #score(name,subject,score) values(\'张三\',\'数学\',80) insert into #score(name,subject,score) values(\'张三\',\'英语\',90) insert into #score(name,subject,score) values(\'李四\',\'语文\',88) insert into #score(name,subject,score) values(\'李四\',\'数学\',86) insert into #score(name,subject,score) values(\'李四\',\'英语\',88) insert into #score(name,subject,score) values(\'李明\',\'语文\',60) insert into #score(name,subject,score) values(\'李明\',\'数学\',86) insert into #score(name,subject,score) values(\'李明\',\'英语\',88) insert into #score(name,subject,score) values(\'林风\',\'语文\',74) insert into #score(name,subject,score) values(\'林风\',\'数学\',99) insert into #score(name,subject,score) values(\'林风\',\'英语\',59) insert into #score(name,subject,score) values(\'严明\',\'英语\',96) --3.取每个学科的前3名数据 select * from ( select subject,name,score,ROW_NUMBER() over(PARTITION by subject order by score desc) as num from #score ) T where T.num <= 3 order by subject --4.删除临时表 drop table #score

结果:

分类:

技术点:

相关文章:

  • 2022-01-11
  • 2022-12-23
  • 2022-12-23
  • 2021-09-21
  • 2022-12-23
  • 2021-08-02
  • 2021-09-19
  • 2022-12-23
猜你喜欢
  • 2021-09-19
  • 2021-12-13
  • 2021-09-30
  • 2021-08-07
  • 2021-09-19
  • 2021-12-20
相关资源
相似解决方案