窗口有序聚合
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
一些聚合函数已经为其聚合指定了排序。 这些包括
原则上,没有什么可以阻止用户对有序聚合窗口函数进行两次排序。 虽然很少有方言实际支持这一点,但这里是它的样子
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] | +----+-----------+-----------+
虽然聚合本身按降序排列值,但窗口规范可能会或可能不会对值进行排序,这意味着如果它确实排序,则窗口框架 仅包括前面的行,否则,将包括所有行。
反馈
您对此页面有任何反馈吗? 我们很乐意听到您的反馈!