1.表结构
要求:按每隔半小时统计收入
2.数据
3.sql语句
SELECT
CONCAT(a.date,' - ',DATE_FORMAT( DATE_ADD( a.date, INTERVAL 30 MINUTE )
, '%Y-%m-%d %H:%i' )),
a.total ,a.incomes
FROM
(
SELECT
DATE_FORMAT(
concat( date( create_time ), ' ', HOUR ( create_time ), ':', floor( MINUTE ( create_time ) / 30 ) * 30 ),
'%Y-%m-%d %H:%i'
) AS date,
count(*) AS total,
sum( incomes ) as incomes
FROM
t_test
GROUP BY
date
) a
思路:先查询出来数据,然后对时间的分钟/30 将一个小时内小于30和大于三十的统一划分为两个时间 区间,这里用了floor函数对分钟进向下去最小整数;然后在进行分组统计
结果