mysql 根据当前日期,查询24个小时每小时的数量,为null填充0

1、时间字段是datetime类型

2、需要用到中间表,表结构和数据链接下载

链接:https://pan.baidu.com/s/1tAFU4nm1p4CkSneXwceA_A 
提取码:b3xi

3、sql

select
    CREATEDATE as YYmmdd,
    CONCAT(CREATEDATE,‘ ‘,d.i) YYmmddHH,
    d.i as HH,
    case when zscum is null then 0 else zscum end as zscum
from
    (
    select
    DATE_FORMAT(CREATEDATE,‘%Y-%m-%d‘) as CREATEDATE,
    SUM(CASE WHEN e.status = ‘1‘ THEN 1 ELSE 0 END ) AS zscum,
    HOUR ( CREATEDATE ) as hour
    from event_base_info e
    -- 自己的条件
    where e.status=‘1‘ and  e.STATE not in(‘3702820001‘)
    -- 时间
    and DATE_FORMAT( CREATEDATE, ‘%Y-%m-%d‘ ) like ‘2019-06-04%‘
    GROUP BY HOUR ( CREATEDATE )
    ) o
    -- 中间表
    RIGHT JOIN ( select i from num where i between ‘0‘ and ‘24‘ ) d on o.hour = d.i
GROUP BY d.i

5、效果 (HH是小时,用了中间表)

如有疏漏,请指正!谢谢

原文地址:https://www.cnblogs.com/w-yu-chen/p/10976792.html

时间: 2024-11-13 09:33:14

mysql 根据当前日期,查询24个小时每小时的数量,为null填充0的相关文章

mysql中模糊查询的四种用法介绍

下面介绍mysql中模糊查询的四种用法: 1,%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示. 比如 SELECT * FROM [user] WHERE u_name LIKE '%三%' 将会把u_name为“张三”,“张猫三”.“三脚猫”,“唐三藏”等等有“三”的记录全找出来. 另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件 SELECT * FROM [user] WHERE u_name LIKE

mysql 获取当前日期及格式化[转]

MYSQL 获取当前日期及日期格式获取系统日期: NOW()格式化日期: DATE_FORMAT(date, format)注: date:时间字段format:日期格式 返回系统日期,输出 2009-12-25 14:38:59select now();输出 09-12-25select date_format(now(),'%y-%m-%d'); 根据format字符串格式化date值: %S, %s 两位数字形式的秒( 00,01, ..., 59)%I, %i 两位数字形式的分( 00,

mysql 获取当前日期及格式化

MYSQL 获取当前日期及日期格式获取系统日期: NOW()格式化日期: DATE_FORMAT(date, format)注: date:时间字段format:日期格式 返回系统日期,输出 2009-12-25 14:38:59select now();输出 09-12-25select date_format(now(),'%y-%m-%d'); 根据format字符串格式化date值: %S, %s 两位数字形式的秒( 00,01, ..., 59)%I, %i 两位数字形式的分( 00,

python3 mysql 多表查询

python3 mysql 多表查询 一.准备表 创建二张表: company.employee company.department #建表 create table department( id int, name varchar(20) ); create table employee( id int primary key auto_increment, name varchar(20), sex enum('male','female') not null default 'male'

MySQL FROM 子查询

FROM 子句中的子查询 MySQL FROM 子查询是指 FROM 的子句作为子查询语句,主查询再到子查询结果中获取需要的数据.FROM 子查询语法如下: SELECT ... FROM (subquery) AS name ... 子查询会生成一个临时表,由于 FROM 子句中的每个表必须有一个名称,因此 AS name 是必须的.FROM 子查询也称为衍生数据表子查询. FROM 子查询实例 table1: s1 s2 1 5 2 12 3 20 FROM 子查询 SQL 如下: SELE

跟王老师学MySQL: 基本查询语句

跟王老师学MySQL: 基本查询语句 主讲教师:王少华   QQ群号:483773664 学习内容 查询语句的基本语法 查询数据指从数据库中获取所需要的数据.MySQL中是使用SELECT语句来查询数据的 一.select的基本语法形式如下 1 2 3 4 5 SELECT  属性列表  FROM  表名 [ WHERE  条件表达式1 ] [ GROUP BY  属性名1  [ HAVING 条件表达式2 ] ] [ ORDER BY  属性名2  [ ASC | DESC ] ] 属性列表:

生产库中遇到mysql的子查询

使用过oracle或者其他关系数据库的DBA或者开发人员都有这样的经验,在子查询上都认为数据库已经做过优化,能够很好的选择驱动表执行,然后在把该经验移植到mysql数据库上,但是不幸的是,mysql在子查询的处理上有可能会让你大失所望,在我们的生产系统上就由于碰到了这个问题: select  i_id, sum(i_sell) as i_sell from table_data where i_id in (select i_id from table_data where Gmt_create

MySQL 获得当前日期时间 函数

mysql> select now(); +---------------------+ | now() | +---------------------+ | 2008-08-08 22:20:46 | +---------------------+ 获得当前日期+时间(date + time)函数:sysdate()sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值.看下面的例子就明白了: my

使用Apache Spark 对 mysql 调优 查询速度提升10倍以上

在这篇文章中我们将讨论如何利用 Apache Spark 来提升 MySQL 的查询性能. 介绍 在我的前一篇文章Apache Spark with MySQL 中介绍了如何利用 Apache Spark 实现数据分析以及如何对大量存放于文本文件的数据进行转换和分析.瓦迪姆还做了一个基准测试用来比较 MySQL 和 Spark with Parquet 柱状格式 (使用空中交通性能数据) 二者的性能. 这个测试非常棒,但如果我们不希望将数据从 MySQL 移到其他的存储系统中,而是继续在已有的