不积跬步,无以至千里

博客园 首页 新随笔 联系 订阅 管理

按照部门提随机取出30%的员工记录,标记字段置为0,剩下70%的员工,标记字段置为1,这样的SQL怎么写呢?

 

merge into emp s
using (select employee_id,
              case
                when round(rn / total, 2) <= 0.30 then
                 0
                else
                 1
              end flag2
         from (select a.employee_id,
                      row_number() over(partition by department_id order by dbms_random.value) rn,
                      count(*) over(partition by department_id) total
                 from emp a)) b
on (s.employee_id = b.employee_id)
when matched then
  update set s.flag = b.flag2;

posted on 2016-02-14 17:05  Zeroassetsor  阅读(218)  评论(0)    收藏  举报