基于动态日期的不同用户数

时间:2013-10-16 16:24:41

标签: mysql sql

我有一个表,记录每次用户登录我的应用程序时的日期。

表格如下:

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服务器,任何帮助

3 个答案:

答案 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