gpt4 book ai didi

MySQL 查询帮助分组和添加

转载 作者:行者123 更新时间:2023-11-30 23:40:32 24 4
gpt4 key购买 nike

我有一个名为 user_logins 的表,用于跟踪用户登录系统。它有三列,login_id, user_id, and login_time

login_id(INT) | user_id(INT) | login_time(TIMESTAMP)
------------------------------------------------------
1 | 4 | 2010-8-14 08:54:36
1 | 9 | 2010-8-16 08:56:36
1 | 9 | 2010-8-16 08:59:19
1 | 3 | 2010-8-16 09:00:24
1 | 1 | 2010-8-16 09:01:24

我希望编写一个查询来确定每天的唯一登录次数(如果那天有登录)并且仅在从当前日期算起的过去 30 天内。所以对于输出应该是这样的

 logins(INT) | login_date(DATE)
---------------------------
1 | 2010-8-14
3 | 2010-8-16

结果表2010-8-16只有3个,因为user_id 9当天登录了两次,他登录系统只算当天登录1次。我只是在寻找特定日期的唯一登录信息。请记住,我只需要过去 30 天的数据,因此它就像是系统上个月用户登录的快照。

我曾尝试创建查询,但收效甚微,我目前所做的是这样,

SELECT
DATE(login_time) as login_date,
COUNT(login_time) as logins
FROM
user_logins
WHERE
login_time > (SELECT DATE(SUBDATE(NOW())-1)) FROM DUAL)
AND
login_time < LAST_DAY(NOW())
GROUP BY FLOOR(login_time/86400)

我知道这是错误的,它只返回从当月月初开始的所有登录,并且没有正确分组。关于如何做到这一点的一些指导将不胜感激。谢谢

最佳答案

您需要使用 COUNT(DISTINCT ...) :

SELECT
DATE(login_time) AS login_date,
COUNT(DISTINCT login_id) AS logins
FROM user_logins
WHERE login_time > NOW() - interval 30 day
GROUP BY DATE(login_time)

我有点不确定您的 WHERE 子句想要什么,因为您的问题似乎自相矛盾。您可能需要根据需要修改 WHERE 子句。

关于MySQL 查询帮助分组和添加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3511273/

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