本文将为您介绍如何对数据进行分组,取出每组数据的前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条),便不再处理,从而提高计算效率。
文档内容是否对您有帮助?