跳至內容
Astera Technology

沒有訂單的月份,為甚麼在趨勢圖消失?

用指定月份清單保留零訂單的時段,分清沒有需求與未提供資料。

下載完整個案資料及參考答案 ↓

先準備用來排查的資料

8 至 10 月的趨勢要有三個月份,即使 9 月沒有訂單。只把訂單分組不會自動產生空月份。先用已指定月份清單,再接完整訂單匯出,計配對訂單編號而不是月曆行數。

以下完整建表及資料只在新的 SQLite 測試資料庫執行。全部紀錄均為假設,數量以件計,輸入的 cents 金額欄以貨幣的分存整數;計算後的平均數可能不足整分。小型例子的各表均完整列在預覽。

假設輸入:months
期間
2026-08
2026-09
2026-10
下載可編輯 CSV ↓
假設輸入:orders
編號落單日
O12026-08-02
O22026-10-03
下載可編輯 CSV ↓
可直接執行的完整測試資料
CREATE TABLE months(period TEXT PRIMARY KEY);
CREATE TABLE orders(id TEXT PRIMARY KEY,placed_on TEXT);
INSERT INTO months VALUES ('2026-08'),('2026-09'),('2026-10');
INSERT INTO orders VALUES ('O1','2026-08-02'),('O2','2026-10-03');

重現錯誤結果,再核對更正

錯誤示範查詢:只用來重現問題
SELECT strftime('%Y-%m',placed_on) AS period,COUNT(*) AS order_count FROM orders GROUP BY period ORDER BY period;
實際執行的錯誤示範結果
期間訂單數
2026-081
2026-101
下載可編輯 CSV ↓
更正後的 SQLite 查詢
SELECT m.period,COUNT(o.id) AS order_count FROM months m LEFT JOIN orders o
ON strftime('%Y-%m',o.placed_on)=m.period GROUP BY m.period ORDER BY m.period;
更正查詢的實際結果
期間訂單數
2026-081
2026-090
2026-101
下載可編輯 CSV ↓

錯誤時間線由 8 月跳到 10 月,各一張訂單;更正後保留 9 月為零。能寫零,是因為本例明確有完整匯出;若資料不齊,應記未能確認。

套用前先測邊界及資料範圍

加入 11 月訂單,不會自行擴大 8 至 10 月範圍;要包括它,須明確修改報表月曆。

邊界測試要另開新的假設資料庫,重做完整建表及資料,只套用以下改動,再執行更正查詢。測試改動不可用於正式系統。

新假設副本內的邊界改動
INSERT INTO orders VALUES ('O3','2026-11-01');
改動後再執行更正查詢的實際結果
期間訂單數
2026-081
2026-090
2026-101
下載可編輯 CSV ↓

這是訂單數,不是需求預測。實際取消及草稿處理、時區和資料齊全程度要先訂明。

以上錯誤、更正及邊界結果都已在 SQLite 執行,並與另行編寫的預期資料逐行核對。證據只適用於這組假設條件,未測其他資料庫、正式效能或你的現有資料結構。

相關資源