ran()とover()の使用例
14827 ワード
Rank()over()の使い方
-回転
testテーブルを作成し、6つのデータを挿入します.
CREATE TABLE test
(
a INT,
b INT,
c CHAR
)
INSERT INTO test VALUES(1,3,'E')
INSERT INTO test VALUES(2,4,'A')
INSERT INTO test VALUES(3,2,'D')
INSERT INTO test VALUES(3,5,'B')
INSERT INTO test VALUES(4,2,'C')
INSERT INTO test VALUES(2,4,'B')
SELECT * from test
a b c----------- ----------- ----1 3 E2 4 A3 2 D3 5 B4 2 C2 4 B
(6行の影響)
1、結果セット全体がグループ化され、aでランク付けされる
SELECT a,b,c,rank () OVER (ORDER BY a) rank FROM test
a b c rank----------- ----------- ---- --------------------1 3 E 12 4 A 22 4 B 23 2 D 43 5 B 44 2 C 6
(6行の影響)
2、結果セット全体がグループ化され、bでランク付けされる
SELECT a,b,c,rank () OVER (ORDER BY b) rank FROM test
a b c rank----------- ----------- ---- --------------------3 2 D 14 2 C 11 3 E 32 4 A 42 4 B 43 5 B 6
(6行の影響)
3、a,bでグループ化し、各グループ内でbでランク付けする.5つのグループに分けられ、2行目と3行目は1つのグループで、他の行は1つのグループです.2行目と3行目のグループ内でb順位で1に並ぶ
SELECT a,b,c,rank () OVER (PARTITION BY a,b ORDER BY b) rank FROM test
a b c rank----------- ----------- ---- --------------------1 3 E 12 4 A 12 4 B 13 2 D 13 5 B 14 2 C 1
(6行の影響)
4、a,bでグループ化し、各グループ内でcでランキングする.5つのグループに分けられ、2行目と3行目は1つのグループで、他の行は1つのグループです.2行目と3行目のグループ内ではcでランク付けされているが,c列は1つがA,1つがBであるため,Rankはそれぞれ1,2である.
SELECT a,b,c,rank () OVER (PARTITION BY a,b ORDER BY c) rank FROM test
a b c rank----------- ----------- ---- --------------------1 3 E 12 4 A 12 4 B 23 2 D 13 5 B 14 2 C 1
(6行の影響)
まとめ:1、partition byは結果セットをグループ化するために使用され、指定されていない場合は結果セット全体をグループ化します.
2、Rankは各グループ内でランク付けされている.
Technoratiラベル:
rank over ,
partition ,
sql