oracle 分析函数

本周工作中碰到了两个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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 学习步骤: 1. 拥有Oracle EBS demo 环境 或者 PROD 环境 2. copy以下代码进 PL/...
    牛马风情阅读 341评论 0 1
  • 分析函数分为函数部分和OVER分析语句部分。 函数部分就是常见的count(),sum()这些函数, over分析...
    下水道潜水员阅读 393评论 0 0
  • 一、Oracle分析函数入门 分析函数是什么? 分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数...
    牛马风情阅读 317评论 0 1
  • OVER(PARTITION BY)开窗函数用法 开窗函数,Oracle从8.1.6开始提供开窗函数,开窗函数用于...
    Bobby0322阅读 6,366评论 0 0
  • 2017年8月5日,我在想,电脑是我的工具,车是我的工具,试想什么不是工具? 好像没有。 有可能我也是别人的工具。...
    我心我愿秀阅读 117评论 0 3

友情链接更多精彩内容