活动用户的SQL查询

时间:2010-05-18 21:23:29

标签: sql

此SQL查询为我提供了今天在过去30天内活跃的用户数量:

SELECT COUNT(*) 
FROM table.users
WHERE creation_tsz >= (now() - interval '30 days')

如何修改它以获取不是单个值,而是为一系列日期修改活动用户表?

我想要的输出如下:

Date       Users active in the last 30 days  
1/1/2010   10000  
1/2/2010   11234  
1/3/2010   12343  
1/4/2010   15944  
...        ... 

谢谢,

罗布

3 个答案:

答案 0 :(得分:2)

COUNT(*)替换为*

答案 1 :(得分:1)

我不知道您使用的数据库是什么,因此很难具体。如果您的日期没有时间,您可以这样做:

SELECT creation_tsz as Date, COUNT(*) as Count
FROM table.users
WHERE creation_tsz >= (now() - interval '30 days')
GROUP BY creation_tsz

否则,这将使你非常接近你想要的东西(因为你只做30天的范围而被排除在外):

SELECT month(creation_tsz) as Month, day(creation_tsz) as Day, COUNT(*) as Count
FROM table.users
WHERE creation_tsz >= (now() - interval '30 days')
GROUP BY month(creation_tsz), day(creation_tsz)

答案 2 :(得分:1)

如果表中的每个数据行代表不同的用户,则可以使用下面的查询。

SELECT COUNT(1), date
FROM table
WHERE date >= (now() - interval '30 days')
GROUP BY 2 ORDER BY 2 DESC;

如果您的表包含所有会话,但每个用户具有不同的ID,则可以使用以下查询。

SELECT COUNT(DISTINCT distinct_id), date
FROM table
WHERE date >= (now() - interval '30 days')
GROUP BY 2 ORDER BY 2 DESC;