mysql根据日期分段_mysql按时间分段统计的sql语句怎么写好?

本文讨论如何在MySQL中根据日期和时间分段统计ID数量,以15分钟为间隔。示例SQL语句展示了利用CASE语句进行统计的方法,但存在代码重复问题。寻求更高效解决方案,尤其是当分段时间间隔更改时,如改为30分钟。此外,还提出了在无数据的时间段填充为0的需求。
摘要由CSDN通过智能技术生成

我的数据库表结构如下:

1c9c30acf9488a48c5d309d760ed0171.png

字段分别是ID,NUM1,NUM2, TIME1,TIME2, MONEY.

想要按照15分钟为间隔来统计ID的数量。效果如同下面的sql语句。

SELECT

sum(CASE when TIME1 >= '2014-02-27 8:00:00' and TIME1 < '2014-02-27 8:15:00' then 1 else 0 end) AS '1',

sum(CASE when TIME1 >= '2014-02-27 8:15:00' AND TIME1 < '2014-02-27 8:30:00' then 1 else 0 end) AS '2',

sum(CASE when TIME1 >= '2014-02-27 8:30:00' AND TIME1 < '2014-02-27 8:45:00' then 1 else 0 end) AS '3',

sum(CASE when TIME1 >= '2014-02-27 8:45:00' AND TIME1 < '2014-02-27 9:00:00' then 1 else 0 end) AS '4',

sum(CASE when TIME1 >= '2014-02-27 9:00:00' and TIME1 < '2014-02-27 9:15:00' then 1 else 0 end) AS '5'

from dealdata;

d117fd7b65ee6b379a4d7360a83871b3.png

但是像上面那么写重复代码多,并且如果我改成30分钟的话,就要改动很多,所以求助sql大神,看有什么好的方法。

———————————————————————————————————分割线————————————————————————————————————

谢谢 arm 同志的帮助,现在能查询出现了

1c98c5f6a38b28d209e6433456e7a849.png

count(id)就是进站的人

但是有的时间段,根本没有进站的人,所以有的时间段没有,例如5:00 -- 5:15

如果要将没有进站的人的时间段 补全为0,该怎么做呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值