-- LEAD(col,n,DEFAULT) 用于统计窗口内往下第n行值
-- 第一个参数为列名,第二个参数为往下第n行(可选,默认为1),第三个参数为默认值(当往下第n行为NULL时候,取默认值,如不指定,则为NULL)
-- LAG(col,n,DEFAULT) 用于统计窗口内往上第n行值
-- 第一个参数为列名,第二个参数为往上第n行(可选,默认为1),第三个参数为默认值(当往上第n行为NULL时候,取默认值,如不指定,则为NULL)
-- FIRST_VALUE 取分组内排序后,截止到当前行,第一个值
-- LAST_VALUE 取分组内排序后,截止到当前行,最后一个值
-- 这几个函数不支持WINDOW子句 select
t2.id
,t2.day
,t2.lead_default_day
,t2.lead_2_day
,t2.lag_default_day
,t2.lag_2_day
,t2.first_day_1
,t2.first_day_2
,t2.last_day_1
,t2.last_day_2
,(unix_timestamp(t2.lead_default_day)-unix_timestamp(t2.day))/3600 as diff_hour
from (
select
t1.id
,t1.day
,lead(t1.day) over(partition by t1.id order by t1.day) as lead_default_day
,lead(t1.day,1,'2018-01-01 00:00:00') over(partition by t1.id order by t1.day) as lead_2_day
,lag(t1.day) over(partition by t1.id order by t1.day) as lag_default_day
,lag(t1.day,1,'2018-01-01 00:00:00') over(partition by t1.id order by t1.day) as lag_2_day
,first_value(t1.day) over(partition by t1.id order by t1.day) as first_day_1
,first_value(t1.day) over(partition by t1.id) as first_day_2
,last_value(t1.day) over(partition by t1.id order by t1.day) as last_day_1
,last_value(t1.day) over(partition by t1.id) as last_day_2
from (
select 'a' as id, '2018-01-01 12:22:00' as day union all
select 'a' as id, '2018-01-09 00:00:00' as day union all
select 'a' as id, '2018-01-02 00:00:00' as day union all
select 'a' as id, '2018-01-03 00:00:00' as day union all
select 'a' as id, '2018-01-04 00:00:00' as day union all
select 'b' as id, '2018-01-08 00:00:00' as day union all
select 'b' as id, '2018-01-05 00:00:00' as day union all
select 'b' as id, '2018-01-06 00:00:00' as day union all
select 'b' as id, '2018-01-07 00:00:00' as day
) t1
) t2
;
+-----+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+---------------------+--+
| id | day | lead_default_day | lead_2_day | lag_2_day | first_day_1 | first_day_2 | last_day_1 | last_day_2 | diff_hour |
+-----+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+---------------------+--+
| b | 2018-01-05 00:00:00 | 2018-01-06 00:00:00 | 2018-01-06 00:00:00 | 2018-01-01 00:00:00 | 2018-01-05 00:00:00 | 2018-01-05 00:00:00 | 2018-01-05 00:00:00 | 2018-01-08 00:00:00 | 24.0 |
| b | 2018-01-06 00:00:00 | 2018-01-07 00:00:00 | 2018-01-07 00:00:00 | 2018-01-05 00:00:00 | 2018-01-05 00:00:00 | 2018-01-05 00:00:00 | 2018-01-06 00:00:00 | 2018-01-08 00:00:00 | 24.0 |
| b | 2018-01-07 00:00:00 | 2018-01-08 00:00:00 | 2018-01-08 00:00:00 | 2018-01-06 00:00:00 | 2018-01-05 00:00:00 | 2018-01-05 00:00:00 | 2018-01-07 00:00:00 | 2018-01-08 00:00:00 | 24.0 |
| b | 2018-01-08 00:00:00 | NULL | 2018-01-01 00:00:00 | 2018-01-07 00:00:00 | 2018-01-05 00:00:00 | 2018-01-05 00:00:00 | 2018-01-08 00:00:00 | 2018-01-08 00:00:00 | NULL |
| a | 2018-01-01 12:22:00 | 2018-01-02 00:00:00 | 2018-01-02 00:00:00 | 2018-01-01 00:00:00 | 2018-01-01 12:22:00 | 2018-01-01 12:22:00 | 2018-01-01 12:22:00 | 2018-01-09 00:00:00 | 11.633333333333333 |
| a | 2018-01-02 00:00:00 | 2018-01-03 00:00:00 | 2018-01-03 00:00:00 | 2018-01-01 12:22:00 | 2018-01-01 12:22:00 | 2018-01-01 12:22:00 | 2018-01-02 00:00:00 | 2018-01-09 00:00:00 | 24.0 |
| a | 2018-01-03 00:00:00 | 2018-01-04 00:00:00 | 2018-01-04 00:00:00 | 2018-01-02 00:00:00 | 2018-01-01 12:22:00 | 2018-01-01 12:22:00 | 2018-01-03 00:00:00 | 2018-01-09 00:00:00 | 24.0 |
| a | 2018-01-04 00:00:00 | 2018-01-09 00:00:00 | 2018-01-09 00:00:00 | 2018-01-03 00:00:00 | 2018-01-01 12:22:00 | 2018-01-01 12:22:00 | 2018-01-04 00:00:00 | 2018-01-09 00:00:00 | 120.0 |
| a | 2018-01-09 00:00:00 | NULL | 2018-01-01 00:00:00 | 2018-01-04 00:00:00 | 2018-01-01 12:22:00 | 2018-01-01 12:22:00 | 2018-01-09 00:00:00 | 2018-01-09 00:00:00 | NULL |
+-----+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+---------------------+--+

最新文章

  1. R abalone data set
  2. JavaScript触屏滑动API介绍
  3. js 定时函数
  4. Spring3 报org.aopalliance.intercept.MethodInterceptor问题解决方法
  5. UVa 10780 (质因数分解) Again Prime? No Time.
  6. linq 多条件查询 where 拼接+分页
  7. 一个简单的Hibernate工具类HibernateUtil
  8. c#软件工程师笔试题
  9. fedora 18 源码编译 android 4.0.1
  10. hdu2639(背包求第k优解)
  11. SQL Server 后续去除功能汇总
  12. python实例编写(4)--js,滚动条,cookie,验证码,获取特定属性的元素,实现原理
  13. (python)leetcode刷题笔记03 Longest Substring Without Repeating Characters
  14. Python 实现获取微信好友信息
  15. HTTPS科普扫盲
  16. Spring security UserDetailsService autowired注入失败错误
  17. IOS7开发~新UI学起(一)
  18. NextPermutation,寻找下一个全排列
  19. 剑指offer——面试题4:二维数组中的查找
  20. Node.js 调用 restful webservice

热门文章

  1. ROS Learning-005 beginner_Tutorials 创建ROS程序包(就是软件包)
  2. 旋转矩阵(Rotate Matrix)的性质分析
  3. 线程池的原理以及实现线程池的类ExecutorService中方法的使用
  4. 1003 NOIP 模拟赛Day2 城市建设
  5. mingw和libcurl
  6. c# 使用protobuf格式操作 Redis
  7. 《Head First Servlets & JSP》-8-无脚本的JSP
  8. Jquery 插件开发——citylinkage(省、市、县城市联动选择)
  9. winFrom程序更新自动安装
  10. Server.MapPath方法的应用方法