[英]SQLite - Output count of all records per day including days with 0 records
我在 AWS 交易所上維護了一個 sqlite3 數據庫,該數據庫由 Python 腳本定期更新。 它跟蹤的一件事是任何團隊為給定主題生成新帖子時。 條目看起來像這樣:
ID | 客戶 | 團隊 | 日期 | 行業 | 城市 |
---|---|---|---|---|---|
895 | 極致行業 | 藍隊 | 2022-06-30 | 建造 | 斯普林菲爾德 |
我正在嘗試創建一個表格,向我顯示每天有多少construction
條目。 現在,填充有數據的條目,但它們排除了沒有條目的日期。 例如,如果我只搜索
SELECT date, count(id) as num_records
from mytable
WHERE industry = "construction"
group by date
order by date asc
我將得到如下所示的結果:
日期 | num_records |
---|---|
2022-04-01 | 3 |
2022-04-04 | 1 |
我怎樣才能使 sqlite 輸出像這樣:
日期 | num_records |
---|---|
2022-04-02 | 3 |
2022-04-02 | 0 |
2022-04-03 | 0 |
2022-04-04 | 1 |
我正在嘗試從這些數據中生成一些圖表,並且需要能夠包含目標時間范圍內的所有日期。
編輯/更新:該表尚未包含每個日期; 它僅包括與條目相關的日期。 如果一天沒有團隊帖子工作, date
列將從第 1 天(例如 2022-04-01)跳轉到第 3 天(2022-04-03)。
假設您的“ mytable ”表包含您需要的所有日期作為假設,您可以首先選擇所有日期,然后將LEFT JOIN
應用於您自己的查詢,並將“ num_records ”字段的所有結果 NULL 值映射到“0 " 使用COALESCE
函數。
WITH cte AS (
SELECT date,
COUNT(id) AS num_records
FROM mytable
WHERE industry = "construction"
GROUP BY date
ORDER BY date
)
SELECT dates.date,
COALESCE(cte.num_records, 0) AS num_records
FROM (SELECT date FROM mytable) dates
LEFT JOIN cte
ON dates.date = cte.date
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.