组内排序
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
某些聚合函数允许对其输入进行排序以产生有序的输出。 这些聚合函数允许在函数之后指定强制性的WITHIN GROUP (ORDER BY ..)
子句。 这不应与聚合 ORDER BY子句混淆,后者允许可选地对输入进行排序以产生有序输出
标准 SQL 讨论了“有序集合聚合函数”,它有三种类型
- 假设集合函数:检查假定值在有序集合中的位置的函数。 这些包括RANK、DENSE_RANK、PERCENT_RANK、CUME_DIST。
- 逆分布函数:计算有序集合上的百分位数的函数,包括PERCENTILE_CONT、PERCENTILE_DISC或MODE。
-
LISTAGG,它不一致地使用
WITHIN GROUP
语法,因为它用于对函数的输出进行排序,并且在所有方言中不是强制性的。
这是一个PERCENTILE_CONT逆分布函数的示例
SELECT percentile_cont(0.5) WITHIN GROUP (ORDER BY ID) FROM BOOK
create.select( percentileCont(0.5).withinGroupOrderBy(BOOK.ID)) .from(BOOK)
产生 BOOK.ID 值的中间值
+-----------------+ | percentile_cont | +-----------------+ | 2.5 | +-----------------+
反馈
您对此页面有任何反馈吗? 我们很乐意听到它!