簡體   English   中英

MySql選擇並計算每天的數據數量-包括空日期

[英]MySql Select and count number of data per day - include empty dates

如何按天從數據庫中選擇和分組數據,但還包括沒有輸入項的天數。 在這種情況下,該值為0。

如果不能與MySQL兼容,也可以使用PHP。

這是我目前擁有的:

SELECT DATE_FORMAT(date, '%Y-%m-%d') AS the_date
     , COUNT(*) AS count 
  FROM table 
 WHERE date BETWEEN DATE_FORMAT('2016-11-28', '%Y-%m-%d') AND DATE_FORMAT('2016-12-05', '%Y-%m-%d') 
 GROUP 
    BY the_date

在PHP中添加缺少的日期可能更簡單。 在MySQL中,您需要從某個地方獲取日期。 通常,數據庫具有包含此信息的“日歷”表。 如果您有一個,則可以執行以下操作:

SELECT DATE_FORMAT(c.date, '%Y-%m-%d') AS the_date, COUNT(t.date) AS count 
FROM Calendar c LEFT JOIN
     table t
     ON c.date = t.date
WHERE c.date BETWEEN '2014-11-28' AND '2014-12-05' -- MySQL recognizes strings in the format of YYYY-MM-DD as dates when needed
GROUP BY the_date;

如果沒有這樣的表,可以為查詢創建一個:

SELECT DATE_FORMAT(c.date, '%Y-%m-%d') AS the_date, COUNT(t.date) AS count 
FROM (SELECT date('2014-11-28') as date UNION ALL
      SELECT date('2014-11-29') as date UNION ALL
      SELECT date('2014-11-30') as date UNION ALL
      SELECT date('2014-12-01') as date UNION ALL
      SELECT date('2014-12-02') as date UNION ALL
      SELECT date('2014-12-03') as date UNION ALL
      SELECT date('2014-12-04') as date UNION ALL
      SELECT date('2014-12-05') as date 
     ) c LEFT JOIN
     table t
     ON c.date = t.date
GROUP BY the_date;

這僅適用於少數日期,但不適用於跨越數月或數年的范圍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM