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

窗口有序聚合

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

一些聚合函数已经为其聚合指定了排序。 这些包括

原则上,没有什么可以阻止用户对有序聚合窗口函数进行两次排序。 虽然很少有方言实际支持这一点,但这里是它的样子

SELECT
  ID,
  array_agg(ID ORDER BY ID DESC) OVER (),
  array_agg(ID ORDER BY ID DESC)
    OVER (ORDER BY ID)
FROM
  BOOK
create.select(
         BOOK.ID,
         arrayAgg(BOOK.ID.desc()).orderBy(BOOK.ID).over(),
         arrayAgg(BOOK.ID.desc()).orderBy(BOOK.ID)
           .over(orderBy(BOOK.ID)))
     .from(BOOK)
     .fetch();

产生

+----+-----------+-----------+
| ID | ARRAY_AGG | ARRAY_AGG |
+----+-----------+-----------+
|  1 | [4,3,2,1] | [1]       |
|  2 | [4,3,2,1] | [2,1]     |
|  3 | [4,3,2,1] | [3,2,1]   |
|  4 | [4,3,2,1] | [4,3,2,1] |
+----+-----------+-----------+

虽然聚合本身按降序排列值,但窗口规范可能会或可能不会对值进行排序,这意味着如果它确实排序,则窗口框架 仅包括前面的行,否则,将包括所有行。

反馈

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

The jOOQ Logo