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

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

(2014-12-15 09:11:51)
标签:

first_value()over()

first_value(x)over(p

分类: Oracle
10.first_value(x)over(partition by ... order by ...)
  10.1.first_value(x)over(partition by ...)
  示例:部门分组,拿到每个部门的第一个值
SELECT G.*, first_value(工资) 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 5000
李四 财务 5200 5000
  10.2.first_value(x)over(order by ...)
  示例:部门排序后,拿到的第一个值
SELECT G.*, first_value(工资) 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
刘二 研发 3200 4000
陈一 研发 6500 4000
赵六 研发 7000 4000
李四 财务 2200 4000
张三 财务 5000 4000
  10.3.first_value(x)over(partition by ... order by ...)
  示例:部门分组,人员排序后,拿到的各部门第一个值
SELECT G.*, first_value(工资) 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
赵六 研发 7000 6500
陈一 研发 6500 6500
张三 财务 5000 5000
李四 财务 5200 5000

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

0

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

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

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

新浪公司 版权所有