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

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

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

min()over()

min(x)over(partition

分类: Oracle
9.min(x)over(partition by ... order by ...)
  9.1.min(x)over(partition by ...)
  示例:计算部门的最高工资
SELECT G.*, min(工资) 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 6500
刘二 研发 6500 6500
陈一 研发 6500 6500
张三 财务 5000 5000
李四 财务 5200 5000
  9.2.min(x)over(order by ...)
  示例:计算逻辑,排序完成后,会自动计算:
程序根据order by后填写的字段进行默认分组并取每组中最小值
当第一位是4000,第二位小于第一位时,第二位显示数据不会被第一位代替
当第三位大于第二位时,第三位显示第二位的数据
当第四位大于第二位时,第四位显示第二位的数据 剩下依次
SELECT G.*, min(工资) OVER(order by 部门) 计算后工资
    from ( select '张三' 人员,'财务' 部门, '5000' 工资  from dual
          union 
          select '李四','财务', '2200'  from dual
          union 
          select '王五','人事', '4000' from dual
          union 
          select '刘二','研发', '3200' from dual
          union 
          select '陈一','研发', '6500' from dual
          union 
          select '赵六','研发', '7000' from dual) G

结果:
王五 人事 4000 4000
赵六 研发 7000 3200
刘二 研发 3200 3200
陈一 研发 6500 3200
张三 财务 5000 2200
李四 财务 2200 2200
  9.3.min(x)over(partition by ... order by ...)
  示例:计算逻辑参考 10.2 
SELECT G.*, min(工资) 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 6500
张三 财务 5000 5000
李四 财务 5200 5000

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

0

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

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

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

新浪公司 版权所有