資料與文件 · 實作指南
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 幫忙解釋差異與產生測試,但由業務負責人確認統計計算方式。報表上線前儲存查詢版本、輸入範圍和驗收結果;一張算得對的小表,比一段聽起來合理的銷售分析更有說服力。

- 一列是什麼?訂單還是商品?
- 哪些訂單在統計範圍內?
- 沒有明細的訂單、退款與取消如何處理?
說明圖重繪 · 合成資料,非實際業務結果