91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

    通城县| 峨眉山市| 莫力| 黄冈市| 当阳市| 洛南县| 苍南县| 奇台县| 建瓯市| 岳西县| 新龙县| 曲水县| 马龙县| 巴南区| 保康县| 德州市| 长丰县| 杭锦旗| 马公市| 垫江县| 荆州市| 曲阳县| 平凉市| 大悟县| 银川市| 南昌县| 余庆县| 隆林| 庐江县| 和硕县| 额济纳旗| 曲阜市| 晋中市| 太仓市| 鄢陵县| 靖西县| 南宁市| 安阳市| 长春市| 盘锦市| 紫云|