gpt4 book ai didi

SQL - 在具有多个 where 子句的单个查询中检索值

转载 作者:行者123 更新时间:2023-11-29 01:18:59 28 4
gpt4 key购买 nike

我有一个包含以下数据的表:

UserName | LastLogin 
-------------------------------
User1 | 2010-10-25 10:05:47
User2 | 2010-10-23 11:10:27
User3 | 2010-10-12 05:39:34
User4 | 2010-10-20 12:22:11
User5 | 2010-09-17 08:41:05

我希望能够运行查询以获取过去 3 天、过去 7 天和过去 21 天登录的人数(我知道这些数字会重叠)。我知道我可以通过运行如下查询来获取每个特定值(语法可能不是 100% 正确):

SELECT COUNT(*) 
FROM login
WHERE LastLogin >= DATEDIFF(NOW(), LastLogin, INTERVAL 3 DAY);

我可以运行一个查询以在一个查询中返回所有三个值吗? GROUP BY 是否有效,或者我可以使用嵌套查询吗?以指定的不同间隔运行查询三次是否同样有效?

最佳答案

使用:

SELECT SUM(CASE WHEN l.lastlogin >= DATE_SUB(CURRENT_DATE, INTERVAL 3 DAY) THEN 1 ELSE 0 END) AS within_3,
SUM(CASE WHEN l.lastlogin >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY) THEN 1 ELSE 0 END) AS within_7,
SUM(CASE WHEN l.lastlogin >= DATE_SUB(CURRENT_DATE, INTERVAL 21 DAY) THEN 1 ELSE 0 END) AS within_21
FROM LOGIN l

我使用了 CURRENT_DATE 而不是 NOW(),因为 NOW() 包括时间部分。

关于SQL - 在具有多个 where 子句的单个查询中检索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4017407/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com