トップN分析、上位 n レコード、 n〜m レコードの取得

SELECT 文 にて条件を伴う上位の n レコードを取得したい場合には ROWNUM によるインラインビューを使用してネストした問い合わせをインライン化するか ROW_NUMBER 分析関数 を使用する。

ROW_NUMBER 分析関数による TOP n 件抽出

ROW_NUMBER() を使用する場合

SELECT NO FROM (
	SELECT ROW_NUMBER() OVER (ORDER BY NO) RNO, NO FROM ROWNUM_TEST
)
WHERE RNO <= 5
ORDER BY NO ;

インラインビューによる TOP n 件抽出

SELECT NO FROM (
	SELECT NO FROM ROWNUM_TEST
	ORDER BY NO
)
WHERE ROWNUM <= 5
ORDER BY NO ;

中間順位での取り出し

 ROW_NUMBER 関数 の場合

Top n の取り出しと同じ

SELECT NO FROM (
    SELECT ROW_NUMBER() OVER (ORDER BY NO) RNO, NO FROM ROWNUM_TEST
)
WHERE RNO BETWEEN 5 AND 10
ORDER BY NO;

インラインビューの場合

ROW_NUMBER 関数に比べてかなり長くなる

SELECT NO  FROM (
	SELECT NO, ROWNUM RNO FROM (
		SELECT NO FROM ROWNUM_TEST
		ORDER BY NO
	)
) WHERE RNO BETWEEN 5 AND 10
ORDER BY NO;


SQL 関連事項

TOP n レコードの取得の関連トピックス

日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ オラクルサポートセンター