1. EXCLUDE 子句(EXCLUDE CURRENT ROW、EXCLUDE TIES、EXCLUDE GROUP、EXCLUDE NO OTHERS)的语义?
窗口帧的 EXCLUDE 子句(EXCLUDE CURRENT ROW、EXCLUDE TIES、EXCLUDE GROUP、EXCLUDE NO OTHERS)的语义是什么?
- 帧排除选项
- 与帧边界的关系
- SQL:2016 特性
EXCLUDE 子句控制帧内是否排除某些行。EXCLUDE CURRENT ROW 排除当前行;EXCLUDE TIES 排除与当前行在 ORDER BY 上"平局"(同值)的行,但保留当前行自己;EXCLUDE GROUP 排除当前行及其所有平局行(即整个 peer 组);EXCLUDE NO OTHERS(默认)不排除任何行。这些选项用于精细控制聚合/窗口计算的帧内容,例如移动平均去抖时排除当前行或平局组。EXCLUDE 是 SQL:2016 特性,PostgreSQL 支持。
EXCLUDE 决定帧内待处理行的子集。EXCLUDE TIES 保留当前行但去掉同值 peer,EXCLUDE GROUP 去掉整个 peer 组,EXCLUDE CURRENT ROW 只去掉当前行。