使用 group by 聚合的 postgres 查询解释

Posted

技术标签:

【中文标题】使用 group by 聚合的 postgres 查询解释【英文标题】:postgres query explanation for aggregate with group by 【发布时间】:2017-02-22 12:34:04 【问题描述】:

SELECT AVG(CAST(overview ->> 'keywords' AS INTEGER )) FROM 报告 按域分组;

我在现有项目中有这个。我需要知道这个查询到底在做什么以及它是如何完成的?

overview 是一个 JSON 字段,keywords 只是一个整数值。

【问题讨论】:

【参考方案1】:

它依次扫描整个reports 表,解除overview 列并获取domain 列,从overview 中提取keywords 属性并将其转换为整数,将结果按@ 分组987654326@ 并计算每组整数值的平均值。

【讨论】:

那么它应该返回每个组的平均值,对吗?还是单个平均值? 我还有一个问题。需要从 reports 中找到 json 字段 keywords 的平均值,并且应该是 unique 字段 domain 和最新字段 ceated_at 是的,它会为每组返回一个平均值。我不明白你的第二个问题。您应该阅读有关 SQL 的信息(我推荐 PostgreSQL 手册来介绍 SQL),如果您有一个具体的问题(举例说明您的意思),请提出一个新问题。

以上是关于使用 group by 聚合的 postgres 查询解释的主要内容,如果未能解决你的问题,请参考以下文章

使用 group by [Postgres] 时选择常用值

聚合函数 和 group by

SQL中只要用到聚合函数就一定要用到group by 吗?

浅析MySQL使用 GROUP BY 分组聚合与细分聚合

为每个用户选择最新条目而不使用 group by (postgres)

在非聚合中使用聚合结果导致 GROUP BY 出现问题