• oracle高级查询


    按照指定顺序排序

    使用场景:需要查询捆号为10,23,9...的数据,查询结果也是按照输入的顺序排列

    sql:

    select * from store
    where xh in (10,23,9)
    order by case xh 
             when 10 then 1
             when 23 then 2
             when 9 then 3
          end
    
    

    分组查询,查询每组的第一条或者最低值

    1. 场景:查询出每个部门工资最低的员工编号【每个部门可能有两个最低的工资员工】

      查询结果:
    --row_number() 顺序排序
    select row_number() over(partition by deptid order by salary) my_rank ,deptid,USERID,salary from tsaler;
    --rank() (跳跃排序,如果有两个第一级别时,接下来是第三级别)
    select rank() over(partition by deptid order by salary) my_rank,deptid,USERID,salary from tsaler;
    --dense_rank()(连续排序,如果有两个第一级别时,接下来是第二级)
    select dense_rank() over(partition by deptid order by salary) my_rank,deptid,USERID,salary from tsaler;
    

    参考

    1> 中间查询结果
    分析:先按照重量类型分组,在按照时间排序给记录加上序号

    select 
            ROW_NUMBER() OVER(PARTITION BY WEIGHTTYPE ORDER BY CREATEDATE DESC) rn,
            t.*
          from J_SITE_OPRATE_T t
          where MATCHID='00017122500002'
    

    select * from (
          select 
            ROW_NUMBER() OVER(PARTITION BY WEIGHTTYPE ORDER BY CREATEDATE DESC) rn,
            t.*
          from J_SITE_OPRATE_T t
          where MATCHID='00017122500002'
        ) t2
        where t2.rn=1
    

    row_number给每一组的记录添加序号(1,2,3...)。rank()给每一组添加序号,按照partition分组,然后根据order by后面的值(a)的大小决定序号的值,如果a相等,则序号相等

  • 相关阅读:
    2014 HDU多校弟九场I题 不会DP也能水出来的简单DP题
    POJ 2208 Pyramids 欧拉四面体
    BNU 4067 求圆并
    POJ 3675 Telescope 简单多边形和圆的面积交
    POJ 2451 Uyuw's Concert(半平面交nlgn)
    [置顶] 程序员期望月薪那些事儿
    一、转正的那些事儿
    鼓膜内陷(听别人说话还震动)
    程序员的职场潜意识Top10
    年过40岁的雷军致已逝去的青春!
  • 原文地址:https://www.cnblogs.com/zhuxiang1633/p/13144004.html
Copyright © 2020-2023  润新知