码迷,mamicode.com
首页 > 数据库 > 详细

Oracle分析函数-first_value()和last_value()

时间:2017-10-25 13:13:40      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:acl   tween   pre   from   ges   .com   理解   first   sele   

first_value()和last_value()字面意思已经很直观了,取首尾记录值。
例:查询部门最早发生销售记录日期和最近发生的销售记录日期

select
       dept_id
      ,sale_date
      ,goods_type
      ,sale_cnt
      ,first_value(sale_date) over (partition by dept_id order by sale_date) first_value
      ,last_value(sale_date) over (partition by dept_id order by sale_date desc) last_value
from criss_sales;

技术分享

看结果first_value()很直观,不用多解释
但是,last_value()值,部门D01不是应该为2014/6/12,部门D02不是应该为2014/5/2吗?为什么会每条记录都不一样?
可以这样去理解:last_value()默认统计范围是 rows between unbounded preceding and current row
验证一下:

select
       dept_id
      ,sale_date
      ,goods_type
      ,sale_cnt
      ,first_value(sale_date) over (partition by dept_id order by sale_date) first_value
      ,last_value(sale_date) over (partition by dept_id order by sale_date desc) last_value
      ,last_value(sale_date) over (partition by dept_id order by sale_date rows between unbounded preceding and unbounded following) last_value_all
from criss_sales;

技术分享

全统计的情况下得到的last_value()值,部门D01为2014/6/12,部门D02为2014/5/2。

Oracle分析函数-first_value()和last_value()

标签:acl   tween   pre   from   ges   .com   理解   first   sele   

原文地址:http://www.cnblogs.com/sooner/p/7727942.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!