窗口函数-偏移函数

-- 偏移分析函数

-- 需求10: 查询出支付时间间隔超过100天的用户数

SELECT

count( DISTINCT a.user_name )

FROM

( SELECT user_name, pay_time, lead( pay_time ) over ( PARTITION BY user_name ORDER BY pay_time ) lead1 FROM user_trade ) a

WHERE

DATEDIFF( a.lead1, a.pay_time )> 100;

知识点总结

Lag和Lead函数可以在同一次查询中取出同一字段的前N行的数据(Lag)和后N行的数据(Lead)

作为 独立的列。

在实际应用当中,若要用到取今天和昨天的某字段差值时,Lag和Lead函数的应用就显得尤为重

要。

lag(exp_str,offffset,defval) over(partion by ......order by ......)

lead(exp_str,offffset,defval) over(partion by ......order by ......)

exp_str是字段名称。 offffset是偏移量,即是上1个或上N个的值,假设当前行在表中排在第5

行,则offffset 为3,则表示我 们所要找的数据行就是表中的第2行(即5-3=2)。offffset默认值为1。

defval默认值,当两个函数取上N/下N个值,当在表中从当前行位置向前数N行已经超出了表的

范 围时,lag()函数将defval这个参数值作为函数的返回值,若没有指定默认值,则返回NULL,

那么 在数学运算中,总要给一个默认值才不会出错。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容