美文网首页Java Spring
oracle 分析函数

oracle 分析函数

作者: SecondRocker | 来源:发表于2015-10-19 01:46 被阅读68次

    本周工作中碰到了两个1对多表的关联查询只要查询出相关联的第一条数据的情况,之前没有使用过分析函数,查了下资料了解了一些。

    demo1

    --员工表(employees)结构
    --ID   姓名   工资    部门ID
    -- id  name salary  dept_id 
    --查询每个部门工资最高的人
    select id  , name,salary,dept_id  from (select id  , name,salary,dept_id rank() 
    over(partition by dept_id order by salary desc) rank from employees) t
    where t.rank = 1
    

    demo2

    --查询每个人与部门最高工资的差额
    select  id  , name,salary,(max(salary) over(partition by dept_id)
    - salary) diff_max_salary,dept_id
    from employees 
    

    解决方案

    select firm_id,firm_name,contact_id,contact_name from
    (select a.id firm_id,a.name firm_name,b.id contact_id,b.name contact_name,
     rank() over(partition by a.id order by b.id) rank
    from firms a left join contacts b on a.id = b.firm_id
    where a.phone like :phone or b.phone like :phone) t where t.rank=1
    

    相关文章

      网友评论

      本文标题:oracle 分析函数

      本文链接:https://www.haomeiwen.com/subject/pxtzcttx.html