Postgresql sql中计数不同的循环

Postgresql sql中计数不同的循环,postgresql,Postgresql,我试图在约会前吸引唯一的活跃用户 具体来说,我有一个日期范围(比如8月到11月),我想知道一个月内某一天或之前的累计唯一活跃用户数 因此,伪代码看起来像这样: 从用户数据库中选择计数(不同的用户) 在哪里 月份=[循环至第8-11个月] 及 天 按您的日期分组并统计用户 因为您不想计算所有用户访问,而只想计算每个用户和每天的一次访问,所以需要添加DISTINCT 这是一个很好的例子。这一项将以前累计完成的所有计数进行汇总 如果您希望在所有日期内获得唯一用户(仅在首次访问时计算用户),您可以首先

我试图在约会前吸引唯一的活跃用户

具体来说,我有一个日期范围(比如8月到11月),我想知道一个月内某一天或之前的累计唯一活跃用户数

因此,伪代码看起来像这样:

从用户数据库中选择计数(不同的用户)

在哪里 月份=[循环至第8-11个月] 及 天

  • 按您的日期分组并统计用户
  • 因为您不想计算所有用户访问,而只想计算每个用户和每天的一次访问,所以需要添加
    DISTINCT
  • 这是一个很好的例子。这一项将以前累计完成的所有计数进行汇总

  • 如果您希望在所有日期内获得唯一用户(仅在首次访问时计算用户),您可以首先使用
    DISTINCT on
    子句筛选用户:

    这将产生:

    SELECT 
       mydate,
       SUM(
           COUNT(*)
       ) OVER (ORDER BY mydate)
    FROM (
        SELECT DISTINCT ON (username)
            *
        FROM t
        ORDER BY username, mydate
    ) s
    GROUP BY mydate
    
    SELECT DISTINCT ON (username)
        *
    FROM t
    ORDER BY username, mydate
    
    SELECT 
       mydate,
       SUM(
           COUNT(*)
       ) OVER (ORDER BY mydate)
    FROM (
        SELECT DISTINCT ON (username)
            *
        FROM t
        ORDER BY username, mydate
    ) s
    GROUP BY mydate