此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 ... ...
谢谢,
罗布
答案 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;