加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

max(x)over(partition by ... order by ...)

(2014-12-15 09:09:04)
标签:

max()over()

max(x)over(partition

分类: Oracle
8.max(x)over(partition by ... order by ...)
  8.1.max(x)over(partition by ...)
  示例:计算部门的最高工资
SELECT G.*, max(工资) OVER(partition by 部门) 部门最高工资
    from ( select '张三' 人员,'财务' 部门, '5000' 工资  from dual
          union 
          select '李四','财务', '5200'  from dual
          union 
          select '王五','人事', '4000' from dual
          union 
          select '刘二','研发', '6500' from dual
          union 
          select '陈一','研发', '6500' from dual
          union 
          select '赵六','研发', '7000' from dual) G 
结果:
王五 人事 4000 4000
赵六 研发 7000 7000
刘二 研发 6500 7000
陈一 研发 6500 7000
张三 财务 5000 5200
李四 财务 5200 5200
  8.2.max(x)over(order by ...)
  示例:计算逻辑,排序完成后,会自动计算:
当第一位是4000,而第二位大于4000时,第二位显示数据不会被4000替代
当第三位小于第二位时,第三位显示数据为第二位的数据
当第四位小于第二位时,第四位显示数据也为第二位的数据 剩下依次
SELECT G.*, max(工资) OVER(order by 部门) 计算后工资
    from ( select '张三' 人员,'财务' 部门, '5000' 工资  from dual
          union 
          select '李四','财务', '5200'  from dual
          union 
          select '王五','人事', '4000' from dual
          union 
          select '刘二','研发', '6500' from dual
          union 
          select '陈一','研发', '6500' from dual
          union 
          select '赵六','研发', '7000' from dual) G 
结果:
王五 人事 4000 4000
赵六 研发 7000 7000
刘二 研发 6500 7000
陈一 研发 6500 7000
张三 财务 5000 7000
李四 财务 5200 7000
  8.3.max(x)over(partition by ... order by ...)
  示例:计算逻辑参考 9.2 
SELECT G.*, max(工资) OVER(partition by 部门 order by 工资) 计算后工资
    from ( select '张三' 人员,'财务' 部门, '5000' 工资  from dual
          union 
          select '李四','财务', '5200'  from dual
          union 
          select '王五','人事', '4000' from dual
          union 
          select '刘二','研发', '6500' from dual
          union 
          select '陈一','研发', '6500' from dual
          union 
          select '赵六','研发', '7000' from dual) G 
结果:
王五 人事 4000 4000
刘二 研发 6500 6500
陈一 研发 6500 6500
赵六 研发 7000 7000
张三 财务 5000 5000
李四 财务 5200 5200

注:在以上窗口函数中,partition by、order by 后可以填写 null。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有