本文將為您介紹如何對數據進行分組,取出每組數據的前 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

實現方法

您可以通過以下兩種方法實現:

  • 取出每條數據的行號,再用 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 實現 Split 函數。

    詳情請參見 MaxCompute 學習計劃 中最后的示例。此例可以更迅速地判斷當前的序號,如果是已經超過預定的條數(例如10 條),便不再處理,從而提高計算效率。