统计一段时间内每天的数据量按日期分组,group by 怎么把某天数据量为0的也显示出来?

时间:2022-07-17 10:00:00
举个例子:
表结构: 
id--------------name--------------addtime
1                       a                      2014-01-01 02:30:21
1                       b                      2014-01-03 03:20:02
1                       c                      2014-01-03 06:10:30
1                       d                      2014-01-06 11:30:15
1                       e                      2014-01-06 11:10:18
1                       f                       2014-01-06 12:30:19
想要达到查询结果:
addtime---------------count
2014-01-01                  1
2014-01-02                  0
2014-01-03                  2
2014-01-04                  0
2014-01-05                  0
2014-01-06                  3
请教各位大神这个SQL要怎么写?

13 个解决方案

#1


用保存所有日期的表与工作表连接处理

#2


具体的SQL要怎么写呢?

#3


先用SP生成日期
select addtime,count(*)-1 from (
select * from lsb
union all
select name,addtime from tt) a
group by addtime

#4


我这是一个表的,你这个SQL要查两个表啊?

#5


当然,MYSQL不支持递归查询

#6


这么说,那我只是一个表的,没办法靠SQL查出来了么?

#7


引用 6 楼 mammothlrm 的回复:
这么说,那我只是一个表的,没办法靠SQL查出来了么?

yes

#8


你需要另外一张日历表,然后做 left join ,这是最通用的方法。

其它可以使用存储过程,或者自己硬写一个 (select 1 union select 2 union select 3 union  .. union select 1000) c 去left join

#9


谢谢两位,以后碰到类似的问题知道怎么解决了~~~不过这次我用其他方式解决了 统计一段时间内每天的数据量按日期分组,group by 怎么把某天数据量为0的也显示出来?

#10


引用 9 楼 mammothlrm 的回复:
谢谢两位,以后碰到类似的问题知道怎么解决了~~~不过这次我用其他方式解决了 统计一段时间内每天的数据量按日期分组,group by 怎么把某天数据量为0的也显示出来?


请教一下这个问题是怎么解决的?我也遇到这个问题了

#11


想知道楼主怎么解决的

#12


同上,想知道楼主怎么解决的

#13


select left(时间,10) as time,count(*) from 表名
group by left(时间,10) order by time 

#1


用保存所有日期的表与工作表连接处理

#2


具体的SQL要怎么写呢?

#3


先用SP生成日期
select addtime,count(*)-1 from (
select * from lsb
union all
select name,addtime from tt) a
group by addtime

#4


我这是一个表的,你这个SQL要查两个表啊?

#5


当然,MYSQL不支持递归查询

#6


这么说,那我只是一个表的,没办法靠SQL查出来了么?

#7


引用 6 楼 mammothlrm 的回复:
这么说,那我只是一个表的,没办法靠SQL查出来了么?

yes

#8


你需要另外一张日历表,然后做 left join ,这是最通用的方法。

其它可以使用存储过程,或者自己硬写一个 (select 1 union select 2 union select 3 union  .. union select 1000) c 去left join

#9


谢谢两位,以后碰到类似的问题知道怎么解决了~~~不过这次我用其他方式解决了 统计一段时间内每天的数据量按日期分组,group by 怎么把某天数据量为0的也显示出来?

#10


引用 9 楼 mammothlrm 的回复:
谢谢两位,以后碰到类似的问题知道怎么解决了~~~不过这次我用其他方式解决了 统计一段时间内每天的数据量按日期分组,group by 怎么把某天数据量为0的也显示出来?


请教一下这个问题是怎么解决的?我也遇到这个问题了

#11


想知道楼主怎么解决的

#12


同上,想知道楼主怎么解决的

#13


select left(时间,10) as time,count(*) from 表名
group by left(时间,10) order by time