我有一个表,记录每次用户登录我的应用程序时的日期。
表格如下:
Userid: int
logintime: timestamp
数据如下所示:
Userid logindate
2 2013-09-01
2 2013-09-02
3 2013-09-02
4 2013-09-02
4 2013-09-03
5 2013-09-03
我希望每天都能找到不同用户的数量,同时跟踪旧用户,以便我想要的结果如下所示:
logindate count of users
2013-09-01 1
2013-09-02 3
2013-09-03 4
在2013-09-01我需要在这一天进行分析 在2013-09-02我需要在2013-09-01和2013-09-02之间进行区分 在2013-09-03我需要在2013-09-01和2013-09-03之间进行区分
我想到了类似下面的内容,但它永远不会返回(需要很多时间)
select date(ul.logintime) d,
(select count(distinct ul2.userid) from userlogin ul2 where
date(ul2.logintime) between ADDDATE(LAST_DAY(SUBDATE(curdate(), INTERVAL 1 MONTH)), 1)
and date(ul.logintime)) dis from userlogin ul where month(logintime) = 9;
我正在使用Mysql服务器,任何帮助
答案 0 :(得分:0)
试试这个:
Select
*
from
myTable
GROUP BY
DATE(logintime), userId
答案 1 :(得分:0)
可能这可能有效:
SELECT
date(greatest(t1.logindate, t2.logindate)) ld,
count(DISTINCT t2.userid) amount
FROM t t1
JOIN t t2 ON t1.logindate >= t2.logindate
GROUP BY ld
ORDER BY ld
小提琴here。
答案 2 :(得分:0)
SELECT COUNT (distinct Userid),logindate
FROM Userlogin
Group by Logindate