Oracle查詢每乙個使用者的最後乙個登入時間

2021-08-02 06:00:05 字數 2369 閱讀 8243

使用row_number() over(partition by)函式

row_number()over()、rank()over()和dense_rank()over()函式的使用下面以班級成績表t2來說明其應用

t2表資訊如下:

cfe 2 74

dss 1 95

ffd 1 95

fda 1 80

gds 2 92

gf 3 99

ddd 3 99

adf 3 45

asdf 3 55

3dd 3 78

select * from

( select name,class,s,rank()over(partition by class order by s desc) mm from t2

) where mm=1;

得到的結果是:

dss 1 95 1

ffd 1 95 1

gds 2 92 1

gf 3 99 1

ddd 3 99 1

注意:

1.在求第一名成績的時候,不能用row_number(),因為如果同班有兩個並列第一,row_number()只返回乙個結果;

select * from

( select name,class,s,row_number()over(partition by class order by s desc) mm from t2

) where mm=1;

1 95 1 –95有兩名但是只顯示乙個

2 92 1

3 99 1 –99有兩名但也只顯示乙個

2.rank()和dense_rank()可以將所有的都查詢出來:
如上可以看到採用rank可以將並列第一名的都查詢出來;

rank()和dense_rank()區別:

–rank()是跳躍排序,有兩個第二名時接下來就是第四名;

select name,class,s,rank()over(partition by class order by s desc) mm from t2

dss 1 95 1

ffd 1 95 1

fda 1 80 3 –直接就跳到了第三

gds 2 92 1

cfe 2 74 2

gf 3 99 1

ddd 3 99 1

3dd 3 78 3

asdf 3 55 4

adf 3 45 5

–dense_rank()l是連續排序,有兩個第二名時仍然跟著第三名

select name,class,s,dense_rank()over(partition by class order by s desc) mm from t2

dss 1 95 1

ffd 1 95 1

fda 1 80 2 –連續排序(仍為2)

gds 2 92 1

cfe 2 74 2

gf 3 99 1

ddd 3 99 1

3dd 3 78 2

asdf 3 55 3

adf 3 45 4

–sum()over()的使用

select name,class,s, sum(s)over(partition by class order by s desc) mm from t2 –根據班級進行分數求和

dss 1 95 190 –由於兩個95都是第一名,所以累加時是兩個第一名的相加

ffd 1 95 190

fda 1 80 270 –第一名加上第二名的

gds 2 92 92

cfe 2 74 166

gf 3 99 198

ddd 3 99 198

3dd 3 78 276

asdf 3 55 331

adf 3 45 376

詳細請參照連線:

Oracle乙個使用者查詢另乙個使用者的表資料

1 兩個使用者是在不同的庫,需要建立dblink 2 屬於同乙個庫的不同使用者 1 方法一 使用 使用者名稱.的方式訪問 例如 要從user1賬號訪問user2中的表table2 a.需要在user2中將table2 grant給user1,user1才有許可權訪問,訪問的時候用select fro...

寫給每乙個自己

寫給每乙個自己 韓寒 最近三個月,看世間百態,人情冷暖,失落與收穫都頗多。失落在我出生是純正的上海郊區農村屌絲,無權無勢,白手起家,本以為自己是乙個很勵志的 屌絲的逆襲 的故事,卻硬要被說成乙個經過多方神秘勢力包裝的驚天大陰謀 失落在北京有乙個幾面之交的 名流友人 莫名編造了乙個內幕,四處傳播,讓我...

Oracle賦予使用者查詢另乙個使用者所有表的許可權

使用者 usera,userb 場景 使用者usera只有使用者userb指定表的查詢許可權。解決方案 1.給他一些許可權,包括連線許可權,因為他要建立同義詞,還需要給他同義詞 grant connect to usera grant create synonym to usera grant cr...