ここでは、データをグループ化する方法を説明します。各データグループのデータの最初の n セクションを取り出します。
サンプルデータ
次の表に、現在のデータを示します。
empno | ename | job | sal |
---|---|---|---|
7369 | SMITH | CLERK | 800.0 |
7876 | SMITH | CLERK | 1100.0 |
7900 | JAMES | CLERK | 950.0 |
7934 | MILLER | CLERK | 1300.0 |
7499 | ALLEN | SALESMAN | 1600.0 |
7654 | MARTIN | SALESMAN | 1250.0 |
7844 | TURNER | SALESMAN | 1500.0 |
7521 | WARD | SALESMAN | 1250.0 |
実装方法
実装方法は 2 つあります。
-
各データの行番号を取り出し、where 文で絞り込みます。
SELECT * FROM ( SELECT empno , ename ,sal , job , ROW_NUMBER() OVER (PARTITION BY job ORDER BY sal) AS rn FROM emp ) tmp WHERE rn < 10;
-
UDTF を使用して Spilit 関数を実装します。
詳細については、こちらのドキュメントの最後の例をご参照ください。 この例では、現在のシーケンス番号をより迅速に判断できます。 この例では、予定された行数を超えた場合は動作しません (たとえば、10 )。したがって、計算の効率が向上します。