我的用户表中有以下结构:
id(INT) registered(DATETIME)
1 2016-04-01 23:23:01
2 2016-04-02 03:23:02
3 2016-04-02 05:23:03
4 2016-04-03 04:04:04
我想获取数据库中所有日期每天的总(累计)用户数 所以结果应该是这样的
day total
2016-04-01 1
2016-04-02 3
2016-04-03 4
我尝试了一些子查询,但不知何故我现在知道如何用可能的 1 个 SQL 语句来实现这一点。当然,如果可以按天计数进行分组并以编程方式添加它们,但如果可能的话我不想这样做。
最佳答案
您可以使用 GROUP BY 来执行所有计数,而无需以编程方式执行任何操作,请查看此查询:
select
d.dt,
count(*) as total
from
(select distinct date(registered) dt from table1) d inner join
table1 r on d.dt>=date(r.registered)
group by
d.dt
order by
d.dt
第一个子查询返回所有不同的日期,然后我们可以将所有日期与所有先前的注册连接起来,并进行计数,所有这些都在一个查询中进行。
可以提高性能的另一种连接条件是:
on d.dt + interval 1 day > r.registered
关于MYSQL - 每日总注册量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37982867/