ORACLE 根據分組排序產生序列號

2021-08-18 09:19:37 字數 1138 閱讀 1935

對應的語法是這樣的

select row_number() over(partition by col1 order by col2) seq

具體的場景如下:

如果一張表中儲存了整個年級的各個班級每個同學的語文成績

create table score

class varchar2(10),

student varchar2(20),

score int

insert into score values('一班','張三',94);

insert into score values('一班','李四',84);

insert into score values('一班','王五',96);

insert into score values('二班','mary',76);

insert into score values('二班','blue',84);

insert into score values('二班','lanceer',62);

那麼我們如果想要這樣的效果

序號   班級  學生  分數

1        一班  王五  96

2        一班  張三  94

3        一班  李四  84

1        二班  blue  84

2        二班  mary  76

3        二班  lanceer  62

那麼就是需要用到了組內排序產生序號的功能

select 

row_number() over(partition by class order by score desc) seq,

class,student score

from score

如果我們想獲取每個班級的第一名的學生的成績,只要在外層再套一層seq的過濾,過濾seq=1的記錄即可

select *

from 

select 

row_number() over(partition by class order by score desc) seq,

class,student score

from score

)where seq = 1

Oracle 先分組後根據每組排序取值

oracle pl sql 先分組後 根據每組排序 獲取每組最大值或最小值 示例 使用者每次登陸都會向表中插入乙個登入日期,現在需要獲取最近10分鐘內登入的使用者,及其最新的登陸時間。因此現需要根據使用者進行分組,然後得到每組中日期最大的那條資料。表結構如下 user id login time 1...

oracle分組排序

在做統計是很多情況會用到分組排序 結合談論的方法 自己建了乙個demo驗證 留在這裡以便備份 create table student2 student id number primary key,student name varchar2 30 not null create table scor...

根據字串分組

今天要做乙個根據字串分組,然後集體執行乙個操作,想了一上午,動態建立陣列什麼的,最後還是用了list。list alllist new arraylist string m1 a123 x1 string m2 a124 x1 string m3 a125 x2 string m4 a126 x2 ...