ここでは、データをグループ化する方法を説明します。各データグループのデータの最初の 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 )。したがって、計算の効率が向上します。