与聚合和分析功能不同

Posted

技术标签:

【中文标题】与聚合和分析功能不同【英文标题】:Distinct with Aggregation and Analytical functions 【发布时间】:2020-03-17 20:21:46 【问题描述】:

我只是好奇,有没有办法在 Postgres 中做到这一点?

SUM(DISTINCT column_a) OVER(PARTITION BY column_b, column_c)

使用 DISTINCT 会导致错误:DISTINCT 未针对窗口函数实现

【问题讨论】:

类似:***.com/a/27566842/330315 【参考方案1】:

这应该可以解决问题:

SELECT column_a,
       column_b,
       column_c,
       sum(column_a) FILTER (WHERE is_new) OVER w
FROM (SELECT column_a,
             column_b,
             column_c,
             column_a IS DISTINCT FROM lag(column_a) OVER w AS is_new
      FROM atable
      WINDOW w AS (PARTITION BY column_b, column_c ORDER BY column_a)
     ) AS q
WINDOW w AS (PARTITION BY column_b, column_c ORDER BY column_a);

在内部查询中,column_a 的所有重复项都会得到is_new = FALSE,因此这些重复项不计入外部查询。

【讨论】:

哇!感谢您的帮助。似乎按预期工作。

以上是关于与聚合和分析功能不同的主要内容,如果未能解决你的问题,请参考以下文章

100天精通Python(数据分析篇)——第65天:Pandas聚合操作与案例

利用Python进行数据分析-Pandas(第六部分-数据聚合与分组运算)

ES聚合分析(聚合分析简介指标聚合桶聚合)

elasticsearch系列六:聚合分析(聚合分析简介指标聚合桶聚合)

Elasticsearch 之聚合分析入门

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