个人整理,转载请注明来源
高级分析函数
返回值 | 函数名 | 说明 | 使用示例 |
返回类型取决于value_expr的类型 | LAG ( value_expr [, offset ] [, default] )OVER ( [query_partition_clause] order_by_clause ) | 通过该函数,可以不通过自连接同时去访问结果集中的其它行,它允许你像处理数组一样的去处理游标。给定一个查询结果集和游标的位置,就可以访问与当前行一起选择的以前的行。其相反的函数是LEAD。 1.offset是一个正整数,在用户没有设置的情况下其默认值为1,表示当前行的前面一行,若索引超出窗口的范围,就返回default值; 2.在用户没有设置default值的情况下,缺省默认返回NULL,用户可以根据所处理列的类型自行设定默认值。例如,如果该列为整型,则可以将默认值设为整数或NULL; 3.如果为浮点型,则可以将默认值设为浮点数或NULL;如果为字符串类型,则可以将默认值设为用单引号或双引号标识的字符串常量或NULL;如果是布尔型,则可以设为布尔值或NULL。 |
lag(cnt,1)OVER(PARTITION BY scene ORDER BY ds) |
返回类型取决于value_expr的类型 | LEAD (value_expr [, offset ] [, default ] ) OVER ( [query_partition_clause] order_by_clause ) | 含义与LAG相反,只是它返回的是当前行的后面的行,其余部分和LAG函数一模一样。 | |
bigint | ROW_NUMBER ( ) OVER ( [query_partition_clause] order_by_clause ) | 返回每个分区内按照某些表达式排序后的行号,从1开始,为每条分组记录返回一个数字。NULL值被视为最小值。 | |
bigint | RANK ( ) OVER ( [query_partition_clause] order_by_clause ) | 1.此函数没有参数,可以计算数据项在分区中的排名。在每个分区内,根据ORDER BY子句中表达式的值,计算查询返回的每一行与其它行的相对位置。组内的数据按ORDER BY子句排序,然后给每一行赋一个号,从而形成一个序列,该序列从1开始,往后累加,有同样值的行得到同样的数字序号(认为NULL是相等的)。每次ORDER BY表达式的值发生变化时,该序列也随之增加。然而,如果两行得到同样的排序,则序数将随后跳跃,如两行序数为1,则没有序数 2.序列将给组中的下一行分配值3,DENSE_RANK则没有任何跳跃,这也是它与DENSE_RANK的唯一区别 3.默认情况下,RANK()和DENSE_RANK()在递增排序中将空值指定为最低序号1,在递减排序中将空值指定为最高序号 |
< |