0

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

该表如下所示:

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 年 9 月 1 日,我需要在这一天计算不同 在 2013 年 9 月 2 日,我需要在 2013 年 9 月 1 日和 2013 年 9 月 2 日之间计算不同 在 2013 年 9 月 3 日,我需要在 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服务器,任何帮助

4

3 回答 3

0
SELECT COUNT (distinct Userid),logindate
FROM Userlogin
Group by Logindate
于 2013-10-16T16:35:10.570 回答
0

尝试这个:

Select 
* 
from 
myTable
GROUP BY
DATE(logintime), userId
于 2013-10-16T16:27:51.157 回答
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

在这里拉小提琴。

于 2013-10-16T16:29:15.030 回答