sql - 有关 SQL 查询的帮助

标签 sql mysql

我有一个名为 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/

相关文章:

SQL服务器: Check if variable is null and then assign statement for Where Clause

python - 查询 sqlite 到 LIKE 但整个单词

sql - 根据字母顺序生成数字

mysql - 选择数据库时去哪里找一个好的引用?

java.net.SocketException : Broken pipe while accessing mysql on cloud server

java - Querydsl/MySQL 上的计数(*)(星号)?

java - 重复更新 MySQL 表中的行

mysql - 编写不使用联接并使用子查询的查询

mysql - 全短语优先搜索

php - 多个mysql查询到一个php二维数组