首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >sql中的distinct循环计数

sql中的distinct循环计数
EN

Stack Overflow用户
提问于 2020-11-14 02:45:15
回答 1查看 63关注 0票数 0

我试着在约会前拉出唯一的活跃用户。

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

因此,伪代码如下所示:

从USER_DB中选择计数(非重复用户)

其中Month =循环8-11个月,循环1:31中的DAY <= day

我想要的输出如下所示

EN

回答 1

Stack Overflow用户

发布于 2020-11-14 07:22:43

step-by-step demo: db<>fiddle

代码语言:javascript
运行
复制
SELECT 
    mydate,
    SUM(                           -- 3
        COUNT(DISTINCT username)   -- 1, 2
    ) OVER (ORDER BY mydate)       -- 3
FROM t
GROUP BY mydate                    -- 2

  1. GROUP BY您的日期和计数用户
  2. 因为您不想计算所有用户访问次数,而是每个用户每天只有一次访问次数,所以您需要添加DISTINCT
  3. This

a

  1. 。这一条汇总了之前执行cumulatively.

操作的所有计数

如果您希望获得全天的唯一用户(仅计算首次访问的用户),您可以首先使用DISTINCT ON子句过滤用户:

demo: db<>fiddle

代码语言:javascript
运行
复制
SELECT DISTINCT ON (username)
    *
FROM t
ORDER BY username, mydate

这会产生以下结果:

代码语言:javascript
运行
复制
SELECT 
   mydate,
   SUM(
       COUNT(*)
   ) OVER (ORDER BY mydate)
FROM (
    SELECT DISTINCT ON (username)
        *
    FROM t
    ORDER BY username, mydate
) s
GROUP BY mydate
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64826392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档