假设我有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之间每小时销售表中有多少记录 然后结果应该像
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
查找sales_at_this_hour的平均值答案 0 :(得分:0)
编辑:抱歉,最初没有完全理解这个问题。
select
DATE_FORMAT(datetime_col, '%Y-%m-%d %h:00:00') as date,
count(id) as count
from table_name
group by date;
获取包含sales_at_this_hour>的小时数的结果1(不完全是你要求的)
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
提供start_date
和end_date
,然后使用DATEDIFF计算平均计算的总时间间隔。
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