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