我有一个名为 activity
的表,其中包含 2 列:
when as datetime // last time i saw a user
guid as varchar // a unique identifier for each user
此表用于跟踪特定资源的使用情况。 Guid 由客户创建。
我希望能够查询在过去一天/一周/一个月我有多少新用户。
新用户由第一次出现在事件表中的 guid
标识。
如何在单个 SQL 语句中执行此操作?
更新: 该表包含用户每次使用资源时的条目。所以如果他用了5次,就会有5行。 在用户使用该资源之前,我没有他的 guid,表中也没有他的条目。
结果:
谢谢大家,帮了大忙。对于任何感兴趣的人,这是我根据您的所有建议汇编而成的:
SET @duration=7;
SELECT COUNT(distinct guid) AS total_new_users FROM `activity`
WHERE `when` >= DATE_SUB(CURDATE(),INTERVAL @duration DAY) AND guid NOT IN
(
SELECT guid
FROM `activity`
WHERE `when` < DATE_SUB(CURDATE(),INTERVAL @duration DAY)
);
最佳答案
select count(guid)as total_new_users
from activity
where when >= {last day/week/month}
and guid not in(select guid
from activity
where when < {last day/week/month})
关于sql - 有关 SQL 查询的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1786216/