Mysql 如何查找两个日期之间每小时的销售额
假设一个销售表有5条记录Mysql 如何查找两个日期之间每小时的销售额,mysql,date,datetime,aggregate,average,Mysql,Date,Datetime,Aggregate,Average,假设一个销售表有5条记录 ID Name datetime_col 1 ABC 2016-09-15 02:07:56 2 HSJ 2016-09-31 11:45:45 3 JSD 2016-11-26 07:09:56 4 JUH 2016-12-31 12:00:00 5 IGY 2017-01-13 14:00:07 我想知道2016-09-15和2017-01-13之间的销售表中每小时有多少条
ID Name datetime_col
1 ABC 2016-09-15 02:07:56
2 HSJ 2016-09-31 11:45:45
3 JSD 2016-11-26 07:09:56
4 JUH 2016-12-31 12:00:00
5 IGY 2017-01-13 14:00:07
我想知道2016-09-15和2017-01-13之间的销售表中每小时有多少条记录
那么结果应该是这样的
Hour sales_at_this_hour
2016-09-15 01:00:00 0
2016-09-15 02:00:00 1
2016-09-15 03:00:00 0
...
...
2017-01-13 01:00:00 0
2017-01-13 02:00:00 0
2017-01-13 03:00:00 0
....
2017-01-13 14:00:00 1
然后使用MySQL查找这一小时的平均销售额编辑:抱歉,一开始没有完全理解这个问题 使用 获得销售时间大于1小时的结果(不完全符合您的要求) 提供
开始日期
和结束日期
,然后用于计算平均计算的总时间间隔
set @start_date = '2016-01-01', @end_date = '2017-01-01';
select
DATE_FORMAT(group_by_date.datetime, '%h:00:00') as hour,
AVG(group_by_date.count) / DATEDIFF(@end_date, @start_date) as average
from (
select
DATE_FORMAT(created_dtm, '%Y-%m-%d %h:00:00') as datetime,
count(id) as count
from table_name
where created_dtm > @start_date
and created_dtm < @end_date
group by datetime
) group_by_date
group by hour;
你能给我一个有解答的问题的链接吗@shmosel我也很想看这个问题。最后,我理解了你的“缺口和岛屿”标签。抢手货我正要把它作为公认的答案写出来。@MasterDJon没有一个链接与我的问题相关如果我想选择平均值,那么两个日期之间的所有时间应该只有一个记录
datetime_col count
2016-02-04 05:00:00 5
2016-02-04 07:00:00 1
2016-02-04 08:00:00 5
2016-02-04 10:00:00 10
2016-02-04 11:00:00 1
set @start_date = '2016-01-01', @end_date = '2017-01-01';
select
DATE_FORMAT(group_by_date.datetime, '%h:00:00') as hour,
AVG(group_by_date.count) / DATEDIFF(@end_date, @start_date) as average
from (
select
DATE_FORMAT(created_dtm, '%Y-%m-%d %h:00:00') as datetime,
count(id) as count
from table_name
where created_dtm > @start_date
and created_dtm < @end_date
group by datetime
) group_by_date
group by hour;
hour average
01:00:00 0.03841209
02:00:00 0.01653005
03:00:00 0.0306716
04:00:00 0.01147541
05:00:00 0.01179831