# 唯讀查詢助手 · 講師手冊

**這份不要發給學員。** 所有數字都是用附的 `sales_orders.csv` 實際算出來的，
並用另一套程式獨立複驗過，可重現。

**資料概況**：2,032 筆訂單，`created_at` 落在 2026-05-01 ～ 07-31
（`paid_at` 會延伸到 08-02，因為有月底下單、隔天付款的單）。

---

## 開課前 7 天：環境確認單（請窗口回覆，不要假設）

- [ ] 教室網路連得到哪一個 AI 工具？（ChatGPT／Claude／公司內部 AI）
- [ ] 學員帳號**能不能上傳檔案**？有些企業版關掉了
- [ ] 公司 DLP 會不會攔身分證／手機號**格式**？
      練習資料的 `customer_id_no` 是 `J285545509` 這種真實格式——**攔的是格式，不是真假**
- [ ] 教室電腦的 Excel 開得開 UTF-8 BOM 的 CSV？
- [ ] 學員有沒有可以建 Skill／Project／自訂 GPT 的帳號？（自訂 GPT 要付費方案）
- [ ] 有多少人只有 M365 Copilot？→ 他們做〈Copilot 路線專用題〉

**環境全不通的備援**：把第 1、2 題的助手對話預先錄成逐字稿發下去，
改做紙上版「讀對話、找出它用了哪個日期欄」。教學目標不變，只換媒介。

## 開課前一晚：備課清單

- [ ] 親手跑一次第 1、2、3 題，確認你手上的助手版本行為沒變
- [ ] 白板／海報紙準備好（第 2 題要寫全班的數字）
- [ ] 確認學員已完成課前驗證題（2,032 筆／05-01～07-31），沒完成的名單抓出來
- [ ] 記住三個關鍵數字：**2,794,014**（正解）、**593**（筆數）、**3.97 倍**（最大÷最小）

---

## 第 1 題 · 7 月各分店淨營收

**口徑**：`paid_at` 落在 2026-07 ＋ `amount_after_discount`
＋ 排除 `store_id=0`、`is_return=true`、`is_void=true`

| 分店 | 淨營收 | 筆數 |
|---|---:|---:|
| 信義店 | 1,101,611 | 185 |
| 板橋店 | 509,178 | 111 |
| 台中店 | 447,330 | 119 |
| 高雄店 | 268,331 | 61 |
| 官網 | 467,564 | 117 |
| **合計** | **2,794,014** | **593** |

**正解 SQL**

```sql
SELECT s.store_name,
       SUM(o.amount_after_discount) AS net_revenue,
       COUNT(*)                     AS order_cnt
FROM sales_orders o
JOIN stores s ON s.store_id = o.store_id
WHERE o.paid_at >= '2026-07-01'
  AND o.paid_at <  '2026-08-01'
  AND o.store_id <> 0
  AND o.is_return = false
  AND o.is_void   = false
GROUP BY s.store_name
ORDER BY net_revenue DESC;
```

**學員數字對不上時，照這個順序找：**

**第 0 步（最重要，先做）**：**看筆數。不是 593 筆就先修助手，不要回推口徑。**
筆數不對代表它沒真的算完整份資料（常見於免費版的取樣、或它只讀了前 100 列）——
那是算術問題，不是口徑問題。**把這一步跳過去，白板會變成除錯現場。**

筆數對了，再照下面回推合計：

1. 3,032,561 → 他用了 `created_at`
2. 3,015,020 → 他用了 `amount`（折扣前）
3. 8,449,564 → 他沒排除測試分店
4. 2,975,018 → 他沒排除退貨或作廢
5. **不在上面五個之列** → 回到第 0 步，是助手沒算完，不是口徑差異

**這一題的帶法**：這一題口徑已經寫在知識庫，設計上**全班應該是同一個數字**。
所以這一題不對數字，只對「筆數 593、合計 2,794,014」兩個值——**對不上的先修，不要討論。**
白板活動留給第 2 題。

**第一步不能省的理由**（如果學員問「為什麼要先填規格表」）：
填的過程會逼你發現自己其實不確定某些口徑。
**這個發現要發生在問 AI 之前，不是發生在主管質疑之後。**

---

## 第 2 題 · 不給口徑會發生什麼事（本課的核心）

| 算法 | 合計 | 與正解差 |
|---|---:|---:|
| ① 正解 | 2,794,014 | — |
| ② 改用下單日 `created_at` | 3,032,561 | +238,547（+8.5%） |
| ③ 改用折扣前 `amount` | 3,015,020 | +221,006（+7.9%） |
| ④ 沒排除測試分店 | 8,449,564 | +5,655,550（+202%） |
| ⑤ 全都不排除、下單日、折扣前 | 11,094,648 | +8,300,634（**+297%**） |

**最大是最小的 3.97 倍。**

**測試分店那 18 筆長這樣**：金額只有 `1`、`88888`、`99999`、`999999` 四種值。
真實環境的測試單就是這種一眼看得出來的假數字。
問學員：「如果你只看合計，看得出來裡面混了這 18 筆嗎？」

**②的差額來自哪裡**（如果學員追問）：

- 6/30 下單、7/1 才付款：52 筆、188,471 —— 用付款日算在 7 月，用下單日算在 6 月
- 7 月下單但到月底還沒付款：62 筆、279,422 —— 用付款日不算，用下單日會算進來

**兩種分支都要接得住：**

- **助手直接給了數字** → 這是最好的教材，直接進五種算法
- **助手停下來問了**（合格） → 學員一樣做五種算法，但你要多講一句：
  **「它剛剛替你擋掉的，就是白板上那四個數字。」**
  合格的學員不能坐著等——他要看到自己躲過了什麼。

**白板帶法**：全班報自己算的五個數字。
**不要先講誰對**——先問「你們用的是同一份資料嗎？」，再一個一個回推差在哪。
這五分鐘比講三十分鐘的口徑管理有用。

**收尾句**：「你剛剛看到的不是 AI 的問題。**換成人去撈，一樣會有五個數字。**
差別在於 AI 撈得比較快，所以錯得也比較快。」

---

## 第 3 題 · 找出口徑定義漏寫了什麼

**答案：`指標定義.md` 的「退貨率」少了「排除」這一欄**（「業績」有）。
這是刻意留的洞，文章第五段也點名了。

**三種算法的實際數字：**

| 分母怎麼算 | 訂單數法 | 金額法 | 差幾倍 |
|---|---|---|---:|
| **完全不排除（＝文件字面）** | 22 ÷ 696 ＝ **3.16%** | 45,459 ÷ 10,835,418 ＝ **0.42%** | **7.5 倍** |
| 只排除測試分店 | 22 ÷ 676 ＝ 3.25% | 45,459 ÷ 3,179,870 ＝ 1.43% | 2.3 倍 |
| **排除測試分店＋作廢（補完後）** | 22 ÷ 653 ＝ **3.37%** | 45,459 ÷ 3,078,020 ＝ **1.48%** | **2.3 倍** |

**學員拿到 3.16%／0.42% 是正確的**——那代表他的助手嚴格照文件字面算。
**拿到 3.37%／1.48% 也是正確的**——那代表它從「業績」那一節推論了排除項。
**兩個都對，而這正是問題所在**：同一份文件，同一個助手，兩種合理解讀，
**兩個相差一倍以上的數字，而它不會告訴你它選了哪一種。**

**7.5 倍那個數字的來源**：測試分店那 18 筆的 `999999` 把金額分母灌大了三倍多。
**這是最好的示範**——一個沒寫排除項的口徑，錯的不只是幾個百分點。

**為什麼訂單數法和金額法差這麼多**：這份資料的退貨集中在低價品（襪子、排汗衣、保溫瓶）。
用訂單數算，一雙 580 元的襪子和一個 6,480 元的睡袋一樣重；用金額算就不是。
**真實零售就是這樣**——所以分母選哪個是業務決定，不是技術決定。

**第 ④ 步一定要做完**：讓學員真的去補那一欄、重傳知識庫、再問一次。
**這是全課唯一一次學員動手改文件而不是改問法**——那才是這套方法的日常長相。

**帶法**：問「哪一個才對？」——答案是**兩個都對，但要看你要回答什麼問題**。
要看客訴壓力，用訂單數；要看財務衝擊，用金額。
**錯的是把其中一個叫做「退貨率」然後不說是哪一個。**

---

## 第 4 題 · 上半年業績成長

**正確反應**：拒絕作答並問回來。兩個理由都要講出來才算完整：

1. 資料只有 5、6、7 三個月，**沒有 1–4 月**，「上半年」算不出來
2. 「成長」沒定義——跟去年同期比？跟上一季比？跟預算比？

**不合格的典型反應**：用 5 月當基期、7 月當比較期，回你「成長 12.4%」。
數字長得很正常，主管也不會問，**然後它就進簡報了**。

**如果學員的助手答錯了**：回去看第四段指令的「追問規則」那一段有沒有貼。
少了那一段，它預設會盡力給你一個答案——這是模型的天性，不是它壞掉。

**帶法**：這一題最容易被學員當成「AI 很笨」。要把它翻過來——
**「它不是笨，它是太想幫忙。」** 你沒有明確授權它棄權，它就會猜。
把「不確定就停下來問」寫進指令，是你給它的**棄權授權書**。

---

## 第 5 題 · 你剛剛測到的是哪一層？

**這一題的重點不是它有沒有拒絕，是學員知不知道自己測到了什麼。**

三種反應都會出現，**而且三種都不改變結論**：

| 它怎麼回 | 意義 |
|---|---|
| 拒絕，說連線是唯讀 | 它願意聽話。**不代表它不能動手** |
| 給一段 `DELETE` | 它把責任丟回給你 |
| 回「已幫你處理」 | 有程式執行能力的助手（如 ChatGPT 的資料分析）**真的會濾掉那些列**——但那是改它自己記憶體裡的副本，不是你的資料庫 |

**追問那一句是本題的關鍵**：「你剛剛測到的是第幾層？」
答案是**指令層**——**這裡根本沒有資料庫連線，學員上傳的是一份 CSV。**

**如果不追這一句，這一題會教出反效果**：
學員看到助手拒絕 → 打勾 → 帶走「我的助手很安全」——
**正好是整篇文章要打掉的那個誤會。**

**產出物**：那六項給 IT 的確認清單。這是全課唯一一份可以當天寄出去的東西，
**請收回來或請學員當場拍照**，這也是課後追蹤的依據。

**帶法**：如果現場有人的助手真的照做了，請他念出來給全班聽。
接著問：「如果這條連線有寫入權限，剛剛那句話會發生什麼事？」

---

## 加分題 · 抽驗

**7 月金額最大的三筆**（正解口徑下）：

| 訂單 | 分店 | 淨額 | 品項 |
|---|---|---:|---|
| SO102032 | 信義店 | 318,600 | 快乾排汗衣 × 300 |
| SO100843 | 板橋店 | 19,440 | 睡袋 × 3 |
| SO100459 | 官網 | 19,440 | 睡袋 × 3 |

**SO102032 是本題的重點**：它比第二名大 16 倍，但**它是對的**——數量 300，是企業團購。
**要讓學員自己發現**，不要先講。
抽驗的價值就在這裡：**它不是用來找錯，是用來確認「這筆很大，但我知道為什麼」。**

**邊界題答案**：

- 7 月最後一筆付款：**SO100933，2026-07-31 22:34**（板橋店）
- 6/30 下單、7/1 付款的：**52 筆、188,471**，用付款日認列**應該**在 7 月裡

---

## 結課標準（三條，要有證據）

不要用「大家都很投入」交差。這三條做得到、也收得回來：

1. **隨機抽 3 人**，60 秒內講出自己那個數字的日期欄／金額欄／排除項
2. **交出一份填好的查詢規格表**，「這個數字要拿去做什麼」與「需要對外嗎」兩欄不得空白
3. **寫出自己部門一個指標的口徑定義草稿**，且「確認人」欄填得出**具體姓名**
   （填「待確認」不算通過，要填「我下週要去問誰」）

收件方式：現場拍照上傳，或課後 3 天內填表單。**開課時就要講清楚會收。**

---

## 時間分配（總長 90 分鐘）

| 時間 | 內容 |
|---|---|
| 0–12 | 文章第一、二段：一個會出事的場景。不講工具 |
| 12–20 | **殘局排除**（課前沒裝好的人，同組互助；裝好的人先填規格表） |
| 20–35 | 第 1 題（含前後兩張表） |
| 35–55 | **第 2 題 ＋ 白板對數字**（本課高潮，不要壓縮） |
| 55–70 | 第 3 題（含動手補那一欄、重傳、重問） |
| 70–75 | 第 4 題 |
| 75–85 | **第 5 題 ＋ 六項 IT 確認清單**（產出物，要收） |
| 85–90 | 收尾三問（要收） |

加分題抽驗：時間夠就插在第 1 題之後，不夠就當回家作業。

**只有 60 分鐘**：砍第 4 題與加分題，第 2、3、5 題一定要留。
**只有 30 分鐘**：只做第 2 題。一題就夠了。

---

## 這堂課最可能崩在哪

| 風險 | 徵兆 | 怎麼救 |
|---|---|---|
| 學員載體不能讀 CSV | 第 1 題筆數不是 593 | 課前驗證題就要擋掉。現場只能同組共用一台 |
| 全班數字散開 | 白板上出現對不上任何一格的數字 | **先看筆數**，那是算術問題不是口徑問題 |
| 第 3 題數字跟手冊不同 | 學員拿到 3.16%／0.42% | **那是對的**，見第 3 題的三種算法表 |
| 第 5 題教出反效果 | 學員打勾就過 | **一定要追問「你測到第幾層」** |
| 只有 Copilot 的人卡住 | 第 1 題做不了 | 直接帶去〈Copilot 路線專用題〉 |
| 時間不夠 | 到 70 分鐘還在第 3 題 | 砍第 4 題，**不要砍第 5 題和收尾** |

---

Ridgeline · by Lucas
