- ROW_NUMBER() OVER (PARTITION BY … ORDER BY …)
PARTITION BY是可选的,这里是相当于根据哪些字段进行分组,分组后再进行标行号,与GROUP BY不同的是PARTITION BY不是分组进行去重、求和等等将多行合并成一行的行为。 - LAG (scalar_expression [ , offset ] [ , default ] ) [ IGNORE NULLS | RESPECT NULLS ]
OVER ( [ partition_by_clause ] order_by_clause )
要根据指定偏移量返回的值。 这是一个返回单个(标量)值的任何类型的表达式。 scalar_expression 不能为分析函数。
offset
当前行(从中获得取值)后的行数。 如果未指定,则默认值为 1。 offset 可以是列、子查询或其他表达式,它们的计算值为正整数,或可隐式转换为 bigint。 offset 不能是负数值或分析函数。
default
偏移量超出分区范围时返回的值。 如果未指定默认值,则返回 NULL。 default 可以是列、子查询或其他表达式,但它不能是分析函数。 default 的类型与 scalar_expression 的类型必须兼容。 - WITH … AS()
WITH关键字通常用于创建临时命名的结果集,这个结果集可以在后续的查询中被引用。 - COALESCE(expression_1, expression_2, …,expression_n)
COALESCE()函数的第一个参数expression为待检测的表达式,而其后的参数个数不定。
COALESCE()函数将会返回包括expression在内的所有参数中的第一个非空表达式。
如果expression不为空值则返回expression;否则判断value1是否是空值,
如果value1不为空值则返回value1;否则判断value2是否是空值,如果value2不为空值则返回value3;……以此类推。