跳到主要內容
Cypher's Practical Coding
正在準備工作環境...

CTE 共用表達式

子查詢很強,但塞在 WHERE 或 FROM 裡面時,SQL 會變得很難讀。CTE(Common Table Expression)就是給子查詢取名字,讓複雜的查詢像寫文章一樣有條理。

  • CTE = WITH 名字 AS (查詢)
  • 就像先在便利貼上算好中間結果,再用它寫最後的報表
  • 可以定義多個 CTE,一步一步來

基本語法

多個 CTE

先算每月營收,再算月增長:

AI 協作:學了這個,跟 AI 怎麼配合?

CTE 是讓 AI 寫出「人類看得懂的 SQL」的最佳武器——你該主動要求 AI 用 CTE。

你的人類優勢:

  • 你能替每個 CTE 取有意義的名字(monthly_sales、vip_customers),讓邏輯一目了然
  • 你能要求 AI 用 CTE 重構難讀的巢狀子查詢

可以這樣跟 AI 說:

這段子查詢太難讀了,請用 CTE(WITH ... AS)重寫,每一段加上中文註解。

練習題

互動示範

DEMO 1可以修改程式碼試玩
DEMO 2可以修改程式碼試玩

挑戰任務

Task 1

用 CTE 算出每個客戶的總消費金額,顯示客戶名稱和總金額,按金額由高到低

Task 2

用 CTE 找出平均訂單金額高於全體平均的客戶(顯示 customer_id 和 avg_amount)

Task 3

用 CTE 統計每個商品類別的商品數量和平均價格(顯示 category、product_count、avg_price)

BackNext Lesson →