窗口框架子句

适用于:Databricks SQL check marked yes Databricks Runtime

指定运行聚合或分析窗口函数的分区中的行的滑动子集。

语法

{ frame_mode frame_start |
  frame_mode BETWEEN frame_start AND frame_end } }

frame_mode
{ RANGE | ROWS }

frame_start
{ UNBOUNDED PRECEDING |
  offset_start PRECEDING |
  CURRENT ROW |
  offset_start FOLLOWING }

frame_end
{ offset_stop PRECEDING |
  CURRENT ROW |
  offset_stop FOLLOWING |
  UNBOUNDED FOLLOWING }

参数

  • frame_mode

    • ROWS

      如果已指定,则滑动窗口框架将以当前行之前或之后的行的形式表示。

    • RANGE

      如果已指定,则窗口函数必须使用单个表达式 obExpr 指定 ORDER BY 子句

      然后将滑动窗口的边界表示为从当前行的 obExpr 算起的偏移量。

  • frame_start

    滑动窗口框架相对于当前行的起始位置。

    • UNBOUNDED PRECEDING

      指定窗口框架从分区的开头位置开始。

    • offset_start PRECEDING

      如果模式为 ROWS,则 offset_start 是正整数文本数字,用于定义框架从当前行之前的多少行处开始。

      如果模式为 RANGE,则 offset_start 是可以从 obExpr 中减去的正文本类型值。 框架从 obExpr 大于或等于当前行处的 obExpr - offset_start 的分区的第一行处开始。

    • CURRENT ROW

      指定框架从当前行处开始。

    • offset_start FOLLOWING

      如果模式为 ROWS,则 offset_start 是正整数文本数字,用于定义帧从当前行之后的多少行处开始。 如果模式为 RANGE,则 offset_start 是可以与 obExpr 相加的正文本类型值。 框架从 obExpr 大于或等于当前行处的 obExpr + offset_start 的分区的第一行处开始。

  • frame_stop

    滑动窗口框架相对于当前行的结束位置。

    如果未指定,则框架将在当前行处停止。 滑动窗口的结束位置必须大于窗口框架的开始位置。

    • offset_start PRECEDING

      如果 frame_mode 为 ROWS,则 offset_stop 是正整数文本数字,用于定义框架在当前行之前的多少行处停止。 如果 frame_mode 为 RANGE,则 offset_stop 是与 offset_start 类型相同的正文本值。 框架在 obExpr 小于或等于当前行处的 obExpr - offset_stop 的分区的最后一行处结束。

    • CURRENT ROW

      指定框架在当前行处停止。

    • offsetStop FOLLOWING

      如果 frame_mode 为 ROWS,则 offset_stop 是正整数文本数字,用于定义框架在当前行之后的多少行处结束。 如果 frame_mode 为 RANGE,则 offset_stop 是与 offset_start 类型相同的正文本值。 框架在 obExpr 小于或等于当前行处的 obExpr + offset_stop 的分区的最后一行处结束。

    • UNBOUNDED FOLLOWING

      指定窗口框架在分区的末尾处停止。