資料與文件 · 實作指南
AI 銷售報表有三行,可能只係兩張訂單
用合成訂單檢查連接明細點樣重複加總,同按金額去重點解都會計錯;先講清楚一行代表乜嘢。
AAHouse 原創解說影片,採用 AI 輔助概念畫面、合成旁白及原創音樂。
英文逐字稿 · 簡體中文普通話逐字稿 · 台灣華語逐字稿 · 澳門粵語逐字稿
一張訂單,點解出現兩次
畀 AI 一份訂單表同一份明細表,叫佢產生銷售摘要。以下係虛構嘅美國工作室資料,金額全部係美元:訂單 A 總額 100,有兩項商品;訂單 B 總額 60,有一項商品。真正嘅訂單總額係 160。將兩張表連接之後,結果有三行。如果再將每行嘅訂單總額加埋,就會得到 260。模型唔使編造任何數字,都可以寫出錯誤結論。

- A:$100 → 商品 1、商品 2
- B:$60 → 商品 3
- 訂單合計:$160
說明圖重繪 · 合成資料,唔係實際業務結果
問題藏喺「一行代表乜嘢」
訂單表一行代表一張訂單,明細表一行代表一項商品。PostgreSQL 文件說明,內部連接會將左表嘅一行,同右表每一行符合條件嘅資料配對,產生連接結果行。[1] 所以 A 嘅 100 出現兩次,係連接規則嘅結果,唔係兩筆收入。叫 AI 寫查詢之前,先將目標寫成「每張訂單計一次」,唔好籠統噉講「彙總呢啲表」。

- A / 商品 1 / $100
- A / 商品 2 / $100
- B / 商品 3 / $60
- 錯誤加總:$260
說明圖重繪 · 合成資料,唔係實際業務結果
唔好用一個 DISTINCT 遮住問題
淨係按金額去重,唔係修復方法。再加訂單 C,總額一樣係 100,但係另一張真實訂單。正確總額變成 260;SUM(DISTINCT 订单总额) 只留低 100 同 60,仍然得到 160。文件入面嘅 DISTINCT 係針對運算式嘅值去重,唔會理解訂單身份。[2] 去重鍵一定要對應業務物件,唔可以因為兩個金額一樣,就刪走其中一張訂單。

- 實際訂單:A $100 + B $60 + C $100
- 正確:$260
- 按金額去重:$100 + $60 = $160
說明圖重繪 · 合成資料,唔係實際業務結果
先揀統計層級,再補明細
如果只係問訂單總額,直接彙總訂單表就得。如果需要商品數量之類嘅明細指標,就先按訂單編號,將明細彙總成每張訂單一行,再連接返訂單表。我哋建議分開核對訂單總額同商品數量,避免冇明確規則,就將訂單層級嘅金額分配落每項商品。呢度討論嘅係報表計算方式,唔係會計或者稅務確認方法。

- 訂單表 → 每張訂單一次 → 金額合計
- 明細表 → 按訂單編號彙總 → 商品數量
- 再連接:每張訂單最多一行彙總資料
說明圖重繪 · 合成資料,唔係實際業務結果
用三張訂單驗收,唔靠流暢解釋
留低 A、B、C 做一組固定小測試:應該有三張訂單、四項明細,總額 260。仲應該加一張冇明細嘅訂單,檢查係咪要保留,並講清楚退款、取消同日期範圍嘅規則。本文已經喺本地 SQLite 執行咗呢組合成資料實驗,驗證咗重複加總同按金額去重呢兩種錯誤;冇連接任何商家資料庫,亦冇測試正式環境嘅查詢。

- 訂單數:3
- 明細行數:4
- 訂單總額:$260
- 三項一齊核對
說明圖重繪 · 合成資料,唔係實際業務結果
下一句點樣交代 AI
可以要求:「先講清楚每張表,同最終結果嘅一行代表乜嘢,再提供查詢,並用固定測試核對訂單數、明細數同總額。」叫 AI 幫手解釋差異同產生測試,但係統計計算方式要由業務負責人確認。報表上線之前,保存查詢版本、輸入範圍同驗收結果;一張計得啱嘅小表,比一段聽落合理嘅銷售分析更有說服力。

- 一行係乜?訂單定係商品?
- 邊啲訂單喺統計範圍內?
- 冇明細嘅訂單、退款同取消點處理?
說明圖重繪 · 合成資料,唔係實際業務結果