查询中的两个 array_aggs 是否共享相同的 window?

Do two array_aggs in a query share the same window?

考虑这个例子:

SELECT    comment_date
        , array_agg(user_id) users
        , array_agg(comment) comments
FROM      user_comments
GROUP BY  comment_date
  1. 假设 userscomments 的索引引用相同的记录(例如,创建的 users[3]评论[3])?
  2. 两个数组的顺序是否可能引用不同的记录,可能是由于性能增强?

我不太了解 Postgres 的内部结构,无法信任 array_agg 排序。

除非您明确指定,否则您不能假设任何关于应用聚合函数的顺序。如果你想确保对 array_agg 的两次调用具有相应的值,你应该为它们都添加 order by 子句。例如:

SELECT    date
        , array_agg(user_id ORDER BY user_id) users
        , array_agg(comment ORDER BY user_id) comments
FROM      user_comments
GROUP BY  date