全部产品
MaxCompute

如何分组取出每组数据的前N条

更新时间:2017-06-07 13:26:11   分享:   

用户需求


希望针对数据进行分组,取出每组数据的前N条数据。

实现方法


目前的数据比如说是:

empnoenamejobsal
7369SMITHCLERK800.0
7876ADAMSCLERK1100.0
7900JAMESCLERK950.0
7934MILLERCLERK1300.0
7499ALLENSALESMAN1600.0
7654MARTINSALESMAN1250.0
7844TURNERSALESMAN1500.0
7521WARDSALESMAN1250.0
方法1:取出每条数据的行号,再用where语句进行过滤:

  1. SELECT * FROM (
  2. SELECT empno
  3. , ename
  4. , sal
  5. , job
  6. , ROW_NUMBER() OVER (PARTITION BY job ORDER BY sal) AS rn
  7. FROM emp
  8. ) tmp
  9. WHERE rn < 10;

方法2:参考这里最后的例子。这个例子有更好的效率,可以判断当前的序号,如果是已经超过预定的条数(比如10条)了就不做处理了,从而提高计算效率。

如问题还未解决,请联系售后技术支持

 

本文导读目录
本文导读目录
以上内容是否对您有帮助?