zoukankan      html  css  js  c++  java
  • mysql按日期分组统计数据

    最近在做一个招聘网时,需要显示一个月内企业招聘信息的发布数量,按日期分组统计,刚开始是直接从源数据库表里面进行group by,但这样子就出现日期不连续的问题了,我想要的效果是,若当天没有数据,则显示为0,这样就达到连续的效果。一开始的想法是使用外连接的方法,但这样就需要另外一张日期表作为连接的对象,研究半天,也就这办法来的实在点,如下:

    这里我生成从2016-1-1开始的10w条日期数据,对于连接已经够用了,下面显示的是第9w9到10w的的数据

    接着,就可以用left join做连接来做日期分组排序了。

    SELECT DATE(dday) createDate,COUNT(*)-1 AS createDateNum FROM(SELECT datelist AS dday FROM calendar-- 这里是限制返回最近30天的数据            
        WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= DATE(datelist)&&DATE(datelist)<=CURDATE()         
        UNION ALL SELECT DATE_FORMAT(t_recruitinfo.createDate,'%Y-%m-%d') FROM t_recruitinfo) a GROUP BY createDate;

     ***********************************************

    语法恶补:

    SQL中的连接可以分为内连接,外连接,以及交叉连接 。

    1. 交叉连接CROSS JOIN

    如果不带WHERE条件子句,它将会返回被连接的两个表的笛卡尔积,返回结果的行数等于两个表行数的乘积。

    cross join后加条件只能用where,不能用on。

    如果两个需要求交际的表太大,将会非常非常慢,不建议使用。

    2. 内连接INNER JOIN-两边表同时符合条件的组合

    如果仅仅使用

    SELECT * FROM table1 INNER JOIN table2

    内连接如果没有指定连接条件的话,和笛卡尔积的交叉连接结果一样,但是不同于笛卡尔积的地方是,没有笛卡尔积那么复杂要先生成行数乘积的数据表,内连接的效率要高于笛卡尔积的交叉连接。

    但是通常情况下,使用INNER JOIN需要指定连接条件。

     

    等值连接(=号应用于连接条件, 不会去除重复的列)

    自然连接(会去除重复的列)

    数据库的连接运算都是自然连接,因为不允许有重复的行(元组)存在。

    例如:

    SELECT * FROM table1 AS a INNER JOIN table2 AS b on a.column=b.column

    3. 外连接OUTER JOIN-指定条件的内连接,仅仅返回符合连接条件的条目。

    外连接则不同,返回的结果不仅包含符合连接条件的行,而且包括左表(左外连接时), 右表(右连接时)或者两边连接(全外连接时)的所有数据行。

    1)左外连接LEFT [OUTER] JOIN

    显示符合条件的数据行,同时显示左边数据表不符合条件的数据行,右边没有对应的条目显示NULL

    2)右外连接RIGHT [OUTER] JOIN

    显示符合条件的数据行,同时显示右边数据表不符合条件的数据行,左边没有对应的条目显示NULL

    3)全外连接full [outer] join

    显示符合条件的数据行,同时显示左右不符合条件的数据行,相应的左右两边显示NULL,即显示左连接、右连接和内连接的并集

     

  • 相关阅读:
    Go 语言入门教程,共32讲,6小时(已完结) yangxu
    JavaGuide学习Zookeeper
    javaguide学习数据库
    使用restTemplate报错:no suitable HttpMessageConverter found for response type [class java.lang.Object...
    MySQL blocked nested loop join(bnl)和index nested loop join(inl)
    spring boot中自动配置应用场景
    MySQL锁的定义
    我挖掘Kafka底层原理!发现了它火爆宇宙的3个真相!
    MySQL导致metadata lock或者flush table lock原因排查方法
    maven中parent标签的作用
  • 原文地址:https://www.cnblogs.com/xhyouyou/p/5558510.html
Copyright © 2011-2022 走看看