mysql数据库实例
简单数据查询操作增删改查是数据表操作的重要组成部分,尤其是数据表的查询更是数据库与各类应用交互的频繁操作之一。本文课主要介绍简单数据查询语句。查询语句基本语法查询语句是实现数据查询的SQL语句,用于实...
2024.11.23Mysql统计近30天的数据,无数据的填充0。 这个应该是我们在做统计分析的时候,经常遇到的一个需求。
先说一般的实现方式,就是按照日期进行分组,但是这样会有一个问题,如果数据库表中有一天没有数据,那么是统计不出来结果的。类似下图
2020-01-01102020-01-03202020-01-044这个时候,我们发现,2020-01-02 这一天是没有数据的,我们希望没有数据的这一天也能返回日期,而对应的数据是0,期望如下:
2020-01-01102020-01-0202020-01-03202020-01-044这时候,单单group by就没办法实现了。
那应该怎么办呢?
一般情况就是我们应该先获取一个日期的虚拟表,把这30天的时间都列出来,然后用这个日期虚拟表再去关联我们的业务表,关联没数据的值设置为空即可,那么怎么得到近30天的日期的,给出sql实现方式
select@s := @s + 1 AS indexs,DATE_FORMAT( DATE( DATE_SUB( CURRENT_DATE, INTERVAL @s DAY ) ), ‘%Y-%m-%d‘ ) AS dates FROMmysql.help_topic,( select @s := -1 ) temp#不想包含当天,@s:=0WHERE@s < 30 ORDER BYdates运行得到的结果如下
当然可根据自己的需要进行排序,时间有了,接下来直接关联自己的业务表就可以了,给出demo:
selectdate_table.dates AS dateValue,IFNULL( temp.count, 0 ) AS count FROM(select@s := @s + 1 AS indexs,DATE_FORMAT( DATE( DATE_SUB( CURRENT_DATE, INTERVAL @s DAY ) ), ‘%Y-%m-%d‘ ) AS dates FROMmysql.help_topic,( select @s := 0 ) temp WHERE@s < 30 ORDER BYdates ) date_tableLEFT JOIN (select LEFT( create_time, 10 ) AS dateValue,count( * ) AS count FROMmonitor_log_record t1 WHEREt1.log_type = 1 AND t1.error_type = 1 AND t1.project_id = 1 GROUP BYLEFT ( create_time, 10 ) ) temp ON date_table.dates = temp.dateValue ORDER BYdate_table.dates DESC好了,记录一下,希望可以帮助到你。有帮助的话记得点赞收藏加关注,感谢!!
简单数据查询操作增删改查是数据表操作的重要组成部分,尤其是数据表的查询更是数据库与各类应用交互的频繁操作之一。本文课主要介绍简单数据查询语句。查询语句基本语法查询语句是实现数据查询的SQL语句,用于实...
2024.11.23概述今天,探讨一个有趣的话题:MySQL 单表数据达到多少时才需要考虑分库分表?有人说 2000 万行,也有人说 500 万行。那么,你觉得这个数值多少才合适呢?单表不能超过500万?曾经在互联网技术...
2024.11.20需求起因在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。所以,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问MySQL等数据库。这个业务场景,主要是解...
2024.11.24锐英源精品原创,禁止全文或局部转载,禁止任何形式的非法使用,侵权必究。点名“简易百科”和闲暇巴盗用锐英源原创内容。在C#结合MySQL进行开发时,安装过MySQL的连接库,就可以用连接库里的类来读取数...
2024.11.20当使用MySQL进行数据操作时,有时我们需要删除或清空表内的数据。本文将介绍MySQL中删除或清空表内数据的方法,并详细说明它们之间的区别以及使用注意事项。在MySQL中,常用的删除或清空表内数据的方...
2024.11.20