Oracle SQLランキング関数-RANK()OVER、DENSE RANK()OVER、ROW NUMBER()OVER
2089 ワード
ランキング関数
特定の列に基づいてサイズでソートされる関数です.
RANK() OVER, DENSE_RANK() OVER, ROW_NUMBER() OVER
グループ内のランキングはRANK(PARTION~)関数を使用する
1) RANK() OVER
▲並べ替え時に重複値(同値)が発生した場合、重複値の個数をスキップして次の並べ替えを行う
ex) 90,80,80,80,70 =>(1,2,2,2,5..)
用.SELECT節
(フォーマットを使用)
Aliasは従業員番号、従業員名、入社日、ランキング
を選択します.並べ替えを繰り返した後、次の順序で連続する値を指定します.
ex) 90,80,80,80,70 =>1,2,2,2,3...
使用例)商品表において販売価格の順にDENSE PARK()関数として等級を指定する
最も一般的な
繰り返し値を考慮せずにSEQUENCE(シーケンス値)を返します.
ex)90,80,80,80,70 => 1,2,3,4,5,....
使用例)商品表において販売価格の順にDENSE PARK()関数として等級を指定する
▲グループごとのランキング関数
(フォーマットを使用)
RANK()OVER(PARTIONBYサビ名1[サビ名2...]
ORDER BY列名11[,列名12...][ASC|DESC])
-列名1[,列名2...]:グループ標準列名
-列名11[,列名12...]:並べ替えられた標準列名
使用例)商品表でカテゴリ別に商品の販売価格で並べ替えてください
特定の列に基づいてサイズでソートされる関数です.
RANK() OVER, DENSE_RANK() OVER, ROW_NUMBER() OVER
グループ内のランキングはRANK(PARTION~)関数を使用する
1) RANK() OVER
▲並べ替え時に重複値(同値)が発生した場合、重複値の個数をスキップして次の並べ替えを行う
ex) 90,80,80,80,70 =>(1,2,2,2,5..)
用.SELECT節
RANK() OVER(ORDER BY 컬럼명 (ASC|DESC)) (AS 별칭)
使用例)従業員表において、80番部署の従業員の中で最も早い入社年度の従業員から順位照会を開始するAliasは従業員番号、従業員名、入社日、ランキング
SELECT EMPLOYEE_ID AS 사원번호,
EMP_NAME AS 사원명,
HIRE_DATE AS 입사일자,
RANK() OVER(ORDER BY HIRE_DATE ASC) AS 순위
FROM HR.EMP
WHERE DEPARTMENT_ID=80;
2) DENSE_RANK() OVERを選択します.並べ替えを繰り返した後、次の順序で連続する値を指定します.
ex) 90,80,80,80,70 =>1,2,2,2,3...
使用例)商品表において販売価格の順にDENSE PARK()関数として等級を指定する
SELECT PROD_ID AS 상품코드,
PROD_NAME AS 상품명,
PROD_PRICE AS 판매가,
RANK() OVER(ORDER BY PROD_PRICE DESC)AS 순위1,
DENSE_RANK() OVER(ORDER BY PROD_PRICE DESC) AS 순위2
FROM PROD;
3) ROW_NUMBER() OVER最も一般的な
繰り返し値を考慮せずにSEQUENCE(シーケンス値)を返します.
ex)90,80,80,80,70 => 1,2,3,4,5,....
使用例)商品表において販売価格の順にDENSE PARK()関数として等級を指定する
SELECT PROD_ID AS 상품코드,
PROD_NAME AS 상품명,
PROD_PRICE AS 판매가,
RANK() OVER(ORDER BY PROD_PRICE DESC)AS 순위1,
DENSE_RANK() OVER(ORDER BY PROD_PRICE DESC) AS 순위2,
ROW_NUMBER() OVER(ORDER BY PROD_PRICE DESC) AS 순위3
FROM PROD;
4)グループ内ランキング▲グループごとのランキング関数
(フォーマットを使用)
RANK()OVER(PARTIONBYサビ名1[サビ名2...]
ORDER BY列名11[,列名12...][ASC|DESC])
-列名1[,列名2...]:グループ標準列名
-列名11[,列名12...]:並べ替えられた標準列名
使用例)商品表でカテゴリ別に商品の販売価格で並べ替えてください
SELECT PROD_ID AS 상품코드,
PROD_NAME AS 상품명,
PROD_LGU AS 분류코드,
PROD_PRICE AS 가격,
RANK() OVER(PARTITION BY PROD_LGU
ORDER BY PROD_PRICE DESC) 순위
FROM PROD;
Reference
この問題について(Oracle SQLランキング関数-RANK()OVER、DENSE RANK()OVER、ROW NUMBER()OVER), 我々は、より多くの情報をここで見つけました https://velog.io/@vgo_dongv/Oracle-SQL-순위함수-RANK-OVER-DENSERANK-OVER-ROWNUMBER-OVERテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol