SuperAPI AI 工具集

mariadb-syntax-window-and-cte

数据与分析

查看项目

更新于 10-16 06:18

技能介绍

用途:在 MariaDB 10.6 LTS、10.11 LTS、11.x、12.x 中编写窗口函数与公用表表达式(CTE),包括排名、累计、分组 Top-N、百分位分桶、间隙与岛屿、层级遍历等查询。

主要能力:窗口函数(ROW_NUMBER、RANK、DENSE_RANK、PERCENT_RANK、CUME_DIST、NTILE、LAG、LEAD、FIRST_VALUE、LAST_VALUE、NTH_VALUE、PERCENTILE_CONT、PERCENTILE_DISC、MEDIAN 及聚合函数作窗口);帧语法仅支持 ROWS 与 RANGE;命名窗口 WINDOW 子句;非递归与递归 CTE;CYCLE col RESTRICT 循环检测。

必要用法:帧单位只能用 ROWS 或 RANGE,MariaDB 不支持 GROUPS。有 ORDER BY 时默认帧为 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW,是运行窗口而非整个分区,需要分区级结果时须显式写帧。值函数(LAG、LEAD、FIRST_VALUE、LAST_VALUE、NTH_VALUE)必须在 OVER() 内写 ORDER BY。递归 CTE 须用 UNION ALL,并以深度守卫(WHERE depth < N)或 CYCLE col RESTRICT 终止,否则超过 max_recursive_iterations(默认 1000)会报错 1969;可用 SET SESSION max_recursive_iterations = 5000; 调整。窗口函数在 WHERE 之后求值,需过滤其结果时应包在 CTE 中再于外层筛选。非递归 CTE 在 derived_merge=on(默认)时可能被合并,可用 EXPLAIN 确认。

版本要求:窗口函数、命名窗口、聚合作窗口、非递归 CTE 需 10.2.1+;递归 CTE 需 10.2.2+;PERCENTILE_CONT、PERCENTILE_DISC、MEDIAN 需 10.3.3+;CYCLE col RESTRICT 需 10.5.2+。

限制:不支持 GROUPS 帧单位、EXCLUDE 子句、OVER 内 ORDER BY 的 NULLS FIRST/NULLS LAST、聚合窗口内的 DISTINCT。资料未提供安装命令与收费信息。