亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL怎么按天分組統計一定時間內的數據

發布時間:2023-03-01 17:27:28 來源:億速云 閱讀:375 作者:iii 欄目:開發技術

今天小編給大家分享一下MySQL怎么按天分組統計一定時間內的數據的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

    思路分析

    • 如果能每天都有數據,可以直接使用最簡單的查詢節省時間。

    • 要能夠展示每天的日期就要創建一張日期虛擬表作為連接表。

    • 要使每天數據不為null,使用IFNULL(count,0)函數進行判斷是否補零。

    SQL實現

    下面以查詢近一個月每天的數據為示例展示SQL實現。

    按天統計數據

    1.沒數據的一天過濾

    SELECT DATE(CREATE_DATE) as date, COUNT(1) as count
    FROM 表
    WHERE 字段 = '1'
      AND DATE_FORMAT(CREATE_DATE, '%Y-%m-%d') >=
          DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 30 DAY), '%Y-%m-%d')
    GROUP BY DATE(CREATE_DATE);

    查詢結果:

    MySQL怎么按天分組統計一定時間內的數據

    2.沒數據的一天有日期總數為null

    SELECT DATE_FORMAT(date,'%Y-%m-%d') AS date,data.num AS count
    FROM (
             SELECT @days := DATE_ADD(@days, INTERVAL - 1 DAY) AS date
             FROM (SELECT @days := DATE_ADD(CURDATE(), INTERVAL + 1 DAY)
                   FROM 表
                  ) day
             WHERE DATE_FORMAT(@days, '%Y-%m-%d') >=
                   DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 29 DAY), '%Y-%m-%d')
             ORDER BY date
         ) dates
             LEFT JOIN (
        SELECT  COUNT(1) AS num, DATE(CREATE_DATE) AS time
        FROM audit_work_sheet
        WHERE 字段 = '1'
          AND DATE_FORMAT(CREATE_DATE, '%Y-%m-%d %H:%i:%S') >=
              DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 30 DAY), '%Y-%m-%d %H:%i:%S')
        GROUP BY DATE(CREATE_DATE)
    ) data ON DATE(time) = date
    ORDER BY date;

    查詢結果:

    MySQL怎么按天分組統計一定時間內的數據

    3.沒數據的一天有日期總數為0

    SELECT DATE_FORMAT(date,'%Y-%m-%d') AS date,IFNULL(data.num, 0) AS count
    FROM (
             SELECT @days := DATE_ADD(@days, INTERVAL - 1 DAY) AS date
             FROM (SELECT @days := DATE_ADD(CURDATE(), INTERVAL + 1 DAY)
                   FROM 表
                  ) day
             WHERE DATE_FORMAT(@days, '%Y-%m-%d') >=
                   DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 29 DAY), '%Y-%m-%d')
             ORDER BY date
         ) dates
             LEFT JOIN (
        SELECT  COUNT(1) AS num, DATE(CREATE_DATE) AS time
        FROM audit_work_sheet
        WHERE 字段 = '1'
          AND DATE_FORMAT(CREATE_DATE, '%Y-%m-%d %H:%i:%S') >=
              DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 30 DAY), '%Y-%m-%d %H:%i:%S')
        GROUP BY DATE(CREATE_DATE)
    ) data ON DATE(time) = date
    ORDER BY date;

    查詢結果

    MySQL怎么按天分組統計一定時間內的數據

    4.加入其它分組字段沒數據的一天有日期總數為0

    SELECT DATE_FORMAT(date,'%Y-%m-%d') AS date,data.level AS level, IFNULL(data.num, 0) AS count
    FROM (
             SELECT @days := DATE_ADD(@days, INTERVAL - 1 DAY) AS date
             FROM (SELECT @days := DATE_ADD(CURDATE(), INTERVAL + 1 DAY)
                   FROM 表
                  ) day
             WHERE DATE_FORMAT(@days, '%Y-%m-%d') >=
                   DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 29 DAY), '%Y-%m-%d')
             ORDER BY date
         ) dates
             LEFT JOIN (
        SELECT RISK_LEVEL AS level, COUNT(1) AS num, DATE(CREATE_DATE) AS time
        FROM audit_work_sheet
        WHERE 字段 = '1'
          AND DATE_FORMAT(CREATE_DATE, '%Y-%m-%d %H:%i:%S') >=
              DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 30 DAY), '%Y-%m-%d %H:%i:%S')
        GROUP BY DATE(CREATE_DATE),level
    ) data ON DATE(time) = date
    ORDER BY date,level;

    查詢結果

    MySQL怎么按天分組統計一定時間內的數據

    (中間過多數據不展示)

    以上就是按天統計數據沒有數據補零的SQL語句,按月按年等其它時間段,或其它分組條件,都可以直接修改參數后查詢出結果。

    附:Mysql按日、周、月進行分組統計

    DATE_FORMAT 是 MySQL 內置的一個函數,作用是以不同的格式顯示日期/時間數據。具體的語法如下:

    DATE_FORMAT(date,format)

    其中

    • date:合法的日期

    • format:規定日期/時間的輸出格式,其中format可使用的格式可以查看以下鏈接

    下面我們通過具體例子來看如何通過 DATE_FORMAT 進行分組統計:

    下表兩列分別代表產品買出的準確時間(精確到秒),和買出的產品類型。

    start_time product_no

    2017/12/1 00:00:112A

    2017/12/3 07:51:113C

    2017/12/3 07:59:253C

    2017/12/5 15:40:456C

    現在我們需要對每天,每周,每月各個產品的銷量進行統計,

    1)按天統計:

    select DATE_FORMAT(start_time,'%Y%m%d') days,count(product_no) count from test group by days;

    2)按周統計:

    select DATE_FORMAT(start_time,'%Y%u') weeks,count(product_no) count from test group by weeks;

    3)按月統計:

    select DATE_FORMAT(start_time,'%Y%m') months,count(product_no) count from test group bymonths;

    以上就是“MySQL怎么按天分組統計一定時間內的數據”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    治多县| 崇仁县| 兴海县| 商城县| 北流市| 始兴县| 郸城县| 抚远县| 中阳县| 孝义市| 镇安县| 金川县| 咸丰县| 绥中县| 武鸣县| 赣榆县| 萨嘎县| 利辛县| 台东县| 泰宁县| 观塘区| 吉水县| 泸西县| 澎湖县| 调兵山市| 大埔区| 二连浩特市| 和平区| 资溪县| 威远县| 武威市| 阿拉善左旗| 南郑县| 博湖县| 娄烦县| 阿拉善盟| 青神县| 武隆县| 华容县| 青川县| 上饶市|