postgresql - 查询中的两个 array_aggs 是否共享同一个窗口?

标签 postgresql array-agg

考虑这个例子:

SELECT    comment_date
        , array_agg(user_id) users
        , array_agg(comment) comments
FROM      user_comments
GROUP BY  comment_date
  1. 假设用户评论的索引引用相同的记录(例如,用户[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

关于postgresql - 查询中的两个 array_aggs 是否共享同一个窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31434254/

相关文章:

java - 将 Maven 项目部署到 Tomcat 无法连接到 Postgres

python - 使用python在PostgreSQL中选择变量

ruby-on-rails - 如何在 hstore 列中的键上添加索引?

PostgreSQL - 将年份转换为日期

SQL 数组聚合和连接

postgresql - 将返回的 SETOF 转换为 PL/PgSQL 中的数组(特别是)

reactjs - 如何在我的 PostgreSQL 日期时间中避免 "Z"

postgresql - 如何使 array_agg() 像 mySQL 中的 group_concat() 一样工作

sql - 如何使用查询 array_agg 制作此 sql?

sql - 使用 ARRAY_AGG 获取列中的第一个非 NULL 值是否浪费?