4

過去30日間のデータベースから1日あたりのビルド数を取得するためのクエリを実行しています。しかし、ビルドもなかった日をマークすることが必要になりました。

WHERE句で、submittimeを使用してビルドがあったかどうかを判断します。これを変更して、COUNT(id)== 0であるが、過去30日間のみの日を含めるにはどうすればよいですか。

元のクエリ:

   SELECT COUNT(id) AS 'Past-Month-Builds', 
          CONCAT(MONTH(submittime), '-', DAY(submittime)) as 'Month-Day' 
     FROM builds 
    WHERE DATE(submittime) >= DATE_SUB(CURDATE(), INTERVAL 30 day) 
 GROUP BY MONTH(submittime), DAY(submittime);

私が試したこと:

   SELECT COUNT(id) AS 'Past-Month-Builds', 
          CONCAT(MONTH(submittime), '-', DAY(submittime)) as 'Month-Day' 
     FROM builds 
    WHERE DATE(submittime) >= DATE_SUB(CURDATE(), INTERVAL 30 day) 
       OR COUNT(id) = 0
 GROUP BY MONTH(submittime), DAY(submittime);
4

1 に答える 1

1

日付のテーブルが必要です。次に、ビルドテーブルに結合したままにします。

このようなもの:

SELECT 
    COUNT(id) AS 'Past-Month-Builds', 
    CONCAT(MONTH(DateTable.Date), '-', DAY(DateTable.Date)) as 'Month-Day' 
FROM DateTable
    LEFT JOIN builds ON DATE(builds.submittime) = DateTable.Date
WHERE DateTable.Date >= DATE_SUB(CURDATE(), INTERVAL 30 day) 
GROUP BY MONTH(submittime), DAY(submittime);
于 2011-07-27T14:31:25.160 に答える