美文网首页
mysql直方图统计

mysql直方图统计

作者: DimonHo | 来源:发表于2019-07-11 11:44 被阅读0次

需求:按天统计2019-06-01 到 2019-06-30 这段时间每天的求助数量
如果单独用下面的语句查询:

SELECT
        count( id ) AS total,
        date_format( gmt_create, "%Y-%m-%d" ) help_date 
    FROM
        v_help_record 
    WHERE
        gmt_create BETWEEN "2019-06-01 00:00:00" 
        AND "2019-06-30 23:59:59" 
    GROUP BY
        help_date 

得到的结果是这样的:


结果1

为0的天数没有返回,导致日期不连续


把上面的语句修改一下:

SELECT
    t1.help_date AS help_date,
    IFNULL( t2.total, 0 ) AS total 
FROM
    (
    SELECT
        @s := @s + 1 AS _index,
        DATE_FORMAT( DATE_SUB( "2019-06-30 23:59:59", INTERVAL @s DAY ), "%Y-%m-%d" ) AS help_date 
    FROM
        v_help_record,
        ( SELECT @s :=- 1 ) temp 
    WHERE
        DATE( DATE_SUB( "2019-06-30 23:59:59", INTERVAL @s DAY ) ) > "2019-06-01 00:00:00" 
    ) AS t1
    LEFT JOIN (
    SELECT
        count( id ) AS total,
        date_format( gmt_create, "%Y-%m-%d" ) help_date 
    FROM
        v_help_record 
    WHERE
        gmt_create BETWEEN "2019-06-01 00:00:00" 
        AND "2019-06-30 23:59:59" 
    GROUP BY
        help_date 
    ) AS t2 ON t1.help_date = t2.help_date 
ORDER BY
    t1.help_date;

查询结果:

image.png
tips:这样查询效率有点慢,实测几乎需要5秒才返回数据,有大神有优化建议的话欢迎留言指教

分析:
1.首先,生成一个临时日期表t1

(
    SELECT
        @s := @s + 1 AS _index,
        DATE_FORMAT( DATE_SUB( "2019-06-30 23:59:59", INTERVAL @s DAY ), "%Y-%m-%d" ) AS help_date 
    FROM
        v_help_record,
        ( SELECT @s :=- 1 ) temp 
    WHERE
        DATE( DATE_SUB( "2019-06-30 23:59:59", INTERVAL @s DAY ) ) > "2019-06-01 00:00:00" 
    ) AS t1
  1. 数据来源表t2
(
    SELECT
        count( id ) AS total,
        date_format( gmt_create, "%Y-%m-%d" ) help_date 
    FROM
        v_help_record 
    WHERE
            gmt_create BETWEEN "2019-06-01 00:00:00" 
        AND "2019-06-30 23:59:59" 
    GROUP BY
        help_date 
    ) AS t2
  1. t1 and t2联合查询得到结果。

相关文章

  • mysql直方图统计

    需求:按天统计2019-06-01 到 2019-06-30 这段时间每天的求助数量如果单独用下面的语句查询: 得...

  • 在Opencv中直方图的绘制

    直方图 什么是直方图呢? 直方图是对数据集合统计,并将统计结果分布于一系列定义的bins中。这里的数据不仅仅是灰度...

  • Opencv-Python学习笔记七——图像直方图 calcHi

    图像直方图 tutorial_py_histogram 直方图是对图像像素的统计分布,它统计了每个像素(0到L-1...

  • 【计算机视觉】OpenCV中直方图处理函数简述

    计算直方图calcHist 直方图是对数据集合的统计 ,并将统计结果分布于一系列预定义的bins中。这里的数据不仅...

  • 基本图像操作

    基本图像操作 1.直方图(histograms) 定义 直方图是对图像在某个指标的不同值的数量的统计,如亮度直方图...

  • openCV:直方图

    直方图 定义 直方图是对数据集合统计,并将统计结果分布于一系列定义的bins中。这里的数据不仅仅是灰度值,统计数据...

  • Histogram-灰度直方图

    前言 什么是直方图? 直方图是对数据的集合做统计,并将统计结果分布于一系列预定义的bins中。 例如: 如果我按照...

  • opencv2(2017.5.4)

    1.使用直方图来统计像素 直方图就是对数据进行统计的一种方法,并且将统计值定义到一系列定义好的bin(组距)中,获...

  • 【图像处理】直方图均衡与匹配

    灰度直方图 灰度直方图: 图像灰度直方图描述的是图像各个灰度级的统计特性,横坐标表示各级灰度值,纵坐标表示各级灰度...

  • 023-Opencv笔记-直方图均衡化

    什么是直方图 图像直方图,是指对整个图像像在灰度范围内的像素值(0~255)统计出现频率次数,据此生成的直方图,称...

网友评论

      本文标题:mysql直方图统计

      本文链接:https://www.haomeiwen.com/subject/dvsrkctx.html