【问题标题】:Aggregate count window function聚合计数窗口函数
【发布时间】:2018-03-29 07:58:33
【问题描述】:

我正在尝试进行返回具有相同名称的行的查询。

查询

SELECT
 version,
 name,
 count (version) OVER (PARTITION BY name)
FROM
 application
WHERE id = 123;

我明白了:

 version |         name         | count 
---------+----------------------+-------
 29.0    | Mouser               |     2
 28.0    | Mouser               |     2
 11.0    | Niche Norman         |     1
         | Galaxy Creator       |     0
         | Cube Generator       |     0

虽然预期的结果是:

 version |         name         | count 
---------+----------------------+-------
 29.0    | Mouser               |     2
 28.0    | Mouser               |     2

但是当我使用having count > 1 时,它什么也没有返回。

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    您不能将 HAVING 与窗口聚合一起使用:

    SELECT *
    FROM
     (
        SELECT
         version,
         name,
         count (version) OVER (PARTITION BY name) as cnt
        FROM
         application
        WHERE id = 123
     ) as dt
    WHERE cnt > 2;
    

    【讨论】:

    • 感谢您的快速回复!效果很好:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-11
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 2012-05-23
    相关资源
    最近更新 更多