请选择 进入手机版 | 继续访问电脑版

MySQL查询、统计最近30天的数据

[复制链接]
菜鸡 发表于 2021-1-1 18:31:36 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
统计数据中最近三十天各天个数

 MySQL统计最近三十天 update_time(更新时间)字段中 各天个数,并将时间转变为 2020-12-02 的日期格式

SQL代码

  1. SELECT COUNT(*),DATE_FORMAT(update_time,'%Y-%m-%d') as time FROM `alarm` where DATE(update_time)>=DATE_SUB(CURDATE(), INTERVAL 29 DAY) GROUP BY time
复制代码
执行效果


 2020-11-01不是30天内的数据 
说明

1.时间转变为 2020-12-02 的日期格式

  1. DATE_FORMAT(update_time,'%Y-%m-%d')
复制代码
查询数据中最近三十天各天个数

统计最近30天各天warmingValue字段的操纵(下面代码以 求总和 举例子)


SQL代码

  1. SELECT lefttable.date,IFNULL(righttable.m,'0') as moneyFROM (SELECT date_sub(CURDATE(),interval @i:=@i+1 day) as date from ( select 1 union all select 1 union all select 1 union all select 1 union all select 1 union all select 1 union all select 1 union all select 1 union all select 1 union all select 1 union all select 1 union all select 1 union all select 1 union all select 1 union all   select 1 union all select 1 union all select 1 union all select 1 union all select 1 union all select 1 union all select 1 union all  select 1 union all select 1 union all select 1 union all select 1 union all select 1 union all select 1 union all select 1 union all  select 1 union all select 1) as tmp,(select @i:= -1) t) as lefttableLEFT JOIN (SELECT sum(warningValue) as m ,DATE_FORMAT(update_time,'%Y-%m-%d') as gptime from alarmwhere DATE(update_time)>=DATE_SUB(CURDATE(), INTERVAL 29 DAY) GROUP BY gptime)as righttableON lefttable.date=righttable.gptime
复制代码
执行效果


说明

可以生成 最近30天的日期 然后 left join 对应的表或者字段,这样就是那天没有数据(数据为0)也能用 IFNULL()函数 设置为0 了。
1.生成最近30天的日期序列:


 
 
参考:https://blog.csdn.net/axela30w/article/details/76507021

来源:https://blog.csdn.net/qq_37552636/article/details/111992904
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )