Postgresql - 窗口函数聚合

Posted

技术标签:

【中文标题】Postgresql - 窗口函数聚合【英文标题】:Postgresql - Window Function Aggregate 【发布时间】:2017-06-07 02:43:09 【问题描述】:

我正在尝试按产品类型查找每月的新用户数量。但是,我仍然收到错误消息,要求在聚合函数中使用 cnt

SELECT EXTRACT(MONTH FROM date) AS month
FROM (SELECT users.date,
             COUNT(*) OVER(PARTITION BY product_type) AS cnt FROM users) AS u
GROUP BY month
ORDER BY cnt DESC;

【问题讨论】:

编辑您的问题并提供示例数据和所需结果。 【参考方案1】:

这似乎是一个非常奇怪的结构。这是一个不使用窗口函数的方法:

select date_trunc('month', date) as  yyyymm, product_id, count(*)
from (select distinct on (u.userid) u.*
      from users u
      order by u.userid, u.date
     ) u
group by date_trunc('month', date), product_id
order by yyyymm, product_id;

【讨论】:

以上是关于Postgresql - 窗口函数聚合的主要内容,如果未能解决你的问题,请参考以下文章

带有 LIMIT 的 PostgreSQL 窗口函数

jOOQ - 在查询中简洁地表示列和聚合/窗口函数

窗口聚合函数与分组聚合函数的异同

MySQL窗口函数_聚合函数

PostgreSQL 如何查找并删除重复数据

PostgreSQL 如何查找并删除重复数据