如何跳几行查表的数据?实现采样取数

本文章的数据来自于 scott 用户的 emp 表。
场景:不用求出全部数据,而是采样取数,要求隔一行返回一位员工数据。

这个要求其实很简单,只要用一个取余函数 mod 即可实现:

看下 mod 之后的结果:

select empno, ename, sal, mod(rn, 2) as m
  from (select rownum as rn, empno, ename, sal
          from (select empno, ename, sal from emp order by 2));

如何跳几行查表的数据?实现采样取数_第1张图片
然后只需要添加一个 where 条件即可实现:

select empno, ename, sal, mod(rn, 2) as m
  from (select rownum as rn, empno, ename, sal
          from (select empno, ename, sal from emp order by 2))
 where mod(rn, 2) = 1;

如何跳几行查表的数据?实现采样取数_第2张图片

通过 mod() 函数,不管指定跳过几行查询都可以实现。

你可能感兴趣的:(SQL,Turning,数据库,服务器,oracle,dba,运维,数据库开发)