SQL中开窗函数first

您所在的位置:网站首页 mysql查询第一个和最后一个数据的关系 SQL中开窗函数first

SQL中开窗函数first

2024-07-10 17:07| 来源: 网络整理| 查看: 265

 

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。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3