mysql 如何查询从当天时间起,30天内,每隔5天内的价格平均值?
有可能某一天没有数据,字段:日期-gmt,价格-price
举例:
今天是9-4日,需要返回
8-30 、 平均价格,
8-25、平均价格,
8-20、平均价格,
这里8-30显示的平均值,对应的是8-30到9-3共5天的价格平均值
这里8-25显示的平均值,对应的是8-25到8-29共5天的价格平均值
SQL基础薄弱,哪位同学来挑战一下
举例:
今天是9-4日,需要返回
8-30 、 平均价格,
8-25、平均价格,
8-20、平均价格,
这里8-30显示的平均值,对应的是8-30到9-3共5天的价格平均值
这里8-25显示的平均值,对应的是8-25到8-29共5天的价格平均值
SQL基础薄弱,哪位同学来挑战一下
最简单的方式就是用(当前时间 - 目标时间 ) / 5,然后向上取整,这样就把时间分成了每5天一段,同一段内的编号interval_5_day_cnt
是一致。
然后按各段的编号取均值,可以计算出来每段的平均值。
最后根据段编号可以反推出来当前段的起始日期
select DATE_sub(CURDATE(),INTERVAL interval_5_day_cnt*5 day) as gmt_begin,avg_price
from
(
select ceil(DATEDIFF(CURDATE(),gmt)/5) as interval_5_day_cnt,avg(price) as avg_price
from test
group by ceil(DATEDIFF(CURDATE(),gmt)/5)
) t
;