适用于以下版本:Dev (3.21) | 最新版 (3.20) | 3.19 | 3.18 | 3.17 | 3.16 | 3.15 | 3.14 | 3.13 | 3.12 | 3.11

组内排序

适用于 ✅ 开源版   ✅ 专业版   ✅ 企业版

某些聚合函数允许对其输入进行排序以产生有序的输出。 这些聚合函数允许在函数之后指定强制性的WITHIN GROUP (ORDER BY ..)子句。 这不应与聚合 ORDER BY子句混淆,后者允许可选地对输入进行排序以产生有序输出

标准 SQL 讨论了“有序集合聚合函数”,它有三种类型

  • 假设集合函数:检查假定值在有序集合中的位置的函数。 这些包括RANKDENSE_RANKPERCENT_RANKCUME_DIST
  • 逆分布函数:计算有序集合上的百分位数的函数,包括PERCENTILE_CONTPERCENTILE_DISCMODE
  • 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 |
+-----------------+

反馈

您对此页面有任何反馈吗? 我们很乐意听到它!

The jOOQ Logo