Available in versions: Dev (3.21) | Latest (3.20) | 3.19 | 3.18 | 3.17 | 3.16 | 3.15 | 3.14 | 3.13 | 3.12 | 3.11
窗口函数
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
窗口函数计算与投影行相关的数据子集(窗口)上的聚合或排名值。
这有许多强大的应用,例如,累计总和或滑动平均值
SELECT id, -- A sliding average over 3 rows, including the current row avg(amount) OVER (ORDER BY id ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING), amount, -- A cumulative sum over all previous rows sum(amount) OVER (ORDER BY id) FROM (VALUES (1, 10.0), (2, 15.0), (3, 20.0), (4, 25.0), (5, 30.0), (6, 35.0) ) AS t (id, amount)
结果是
+----+-----------------+--------+-----------------+ | id | sliding average | amount | cumulative sum | +----+-----------------+--------+-----------------+ | 1 | 12.5 | 10.0 | --\ 10.0 | | 2 | 15.0 | 15.0 | | 25.0 | | 3 | 20.0 | 20.0 | | 45.0 | | 4 | 25.0 /-- | 25.0 | | 70.0 | | 5 | 30.0 = AVG + | 30.0 | --+ SUM = 100.0 | | 6 | 32.5 \-- | 35.0 | 135.0 | +----+-----------------+--------+-----------------+
如图所示,聚合发生在相对于计算行的窗口上
- 在
AVG
示例中,窗口随行移动,始终查找后面的 1 行和前面的 1 行(如果适用),跨越 1-3 行之间的任何内容,并计算这些行的平均值,形成滑动平均值。 - 在
SUM
示例中,窗口始终从数据集的开头开始,并对直到当前行的所有行求和,形成累积总和。
这个强大功能的详细工作原理将在接下来的页面中说明,其中各种子句,包括 PARTITION BY 子句, ORDER BY 子句和 frame 子句被解释。
目录
- 3.11.26.1.
- PARTITION BY
- 3.11.26.2.
- ORDER BY
- 3.11.26.3.
- ROWS,RANGE,GROUPS (frame 子句)
- 3.11.26.4.
- EXCLUDE
- 3.11.26.5.
- NULL 处理
- 3.11.26.6.
- FROM FIRST,FROM LAST
- 3.11.26.7.
- 嵌套聚合函数
- 3.11.26.8.
- 窗口聚合
- 3.11.26.9.
- 窗口有序聚合
- 3.11.26.10.
- ROW_NUMBER
- 3.11.26.11.
- RANK
- 3.11.26.12.
- DENSE_RANK
- 3.11.26.13.
- PERCENT_RANK
- 3.11.26.14.
- CUME_DIST
- 3.11.26.15.
- NTILE
- 3.11.26.16.
- LEAD
- 3.11.26.17.
- LAG
- 3.11.26.18.
- FIRST_VALUE
- 3.11.26.19.
- LAST_VALUE
- 3.11.26.20.
- NTH_VALUE
previous : next |
反馈
您对此页面有任何反馈吗?我们很乐意听到您的声音!