SQLSERVER中LEAD和LAG函数

  次阅读 作者:智能小宝 来源:互联网 2016-02-17 09:44 我要评论(0)

SQL SERVER中LEAD和LAG函数

LEAD和LAG函数

LEAD

访问相同结果集的后续行中的数据,而不使用 SQL Server 2012 中的自联接。 LEAD 以当前行之后的给定物理偏移量来提供对行的访问。 在SELECT 语句中使用此分析函数可将当前行中的值与后续行中的值进行比较。

语法:LEAD ( scalar_expression [ ,offset ] , [ default ] ) OVER ( [partition_by_clause ] order_by_clause )

scalar_expression,要返回的值基于指定的偏移量。 这是一个返回单个(标量)值的任何类型的表达式。scalar_expression不能为分析函数

offset默认值为1, offset 可以是列、子查询或其他求值为正整数的表达式,或者可隐式转换为bigint。offset不能是负数值或分析函数。

default默认值为NULL, offset可以是列、子查询或其他求值为正整数的表达式,或者可隐式转换为bigint。offset不能是负数值或分析函数。

LAG

访问相同结果集的先前行中的数据,而不使用 SQL Server 2012 中的自联接。 LAG 以当前行之前的给定物理偏移量来提供对行的访问。 在SELECT 语句中使用此分析函数可将当前行中的值与先前行中的值进行比较。

下面看一组SQL语句:

WITH test

as

(

select NULL as score

UNION ALL

select 10

UNION ALL

select 20

UNION ALL

select 30

UNION ALL

select 40

UNION ALL

select 50

)

select ROW_NUMBER() over(order by score) as rownum

,score

,LEAD(score) over(order by score) as nextscore1

,LEAD(score,1) over(order by score) as nextscore2

,LEAD(score,1,0) over(order by score) as nextscore3

,LEAD(score,2) over(order by score) as nextscore4

,LAG(score) over(order by score) as previousscore1

,LAG(score,1) over(order by score) as previousscore2

,LAG(score,1,0) over(order by score) as previousscore3

,LAG(score,2) over(order by score) as previousscore4

from test

结果前半部分:

rownum score nextscore1 nextscore2 nextscore3 nextscore4

1 NULL 10 10 10 20

2 10 20 20 20 30

3 20 30 30 30 40

4 30 40 40 40 50

5 40 50 50 50 NULL

6 50 NULL NULL 0 NULL

LEAD(score)over(order by score)与LEAD(score,1)over(order byscore)相同,基于SCORE升序取下一个score。

LEAD(score,Y)over(order by score)公式:按score升序排列第X行计算LEAD(score,Y)over(orderby score)为第X+Y行的值。

对第X行求LEAD(score)over(order by score),值为第X+1行的值。见列nextscore1和nextscore2。

对第X行求LEAD(score,2)over(order by score),值为第X+2行的值。见列nextscore4。

对于第6行,由于没有第7行数据,所以LEAD求出的值为NULL。如果指定默认值,则返回指定默认值。,如LEAD(score,1,0)最后一行返回0。见netsocre3列。

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...