先 UNION 再 JOIN 的查詢
你的目標是建立與先前相同的報表,包含以下欄位:
- season:輸出
summer或winter - country
- events:顯示唯一的賽事數量
在本練習中,請採用先 UNION、後 JOIN 的方式來撰寫查詢。使用這種方式時,你需要將最初的 UNION 查詢作為子查詢。子查詢必須包含所有相關欄位,包括用於連接的欄位。
一如既往,你可以參考這份 E:R 圖。
本練習屬於課程
SQL 報表製作
練習說明
- 在子查詢中,利用
UNION ALL將夏季與冬季賽事合併,產生season、country_id與event。 - 使用
JOIN搭配另一個SELECT陳述式,輸出season、country與唯一的events欄位。 - 對所有未彙總的欄位使用
GROUP BY。 - 依
events由大到小排序報表。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
-- Add outer layer to pull season, country and unique events
SELECT
____,
____,
____ AS events
FROM
-- Pull season, country_id, and event for both seasons
(SELECT
____ AS season,
____,
____
FROM ____
____
SELECT
____ AS season,
____,
____
FROM ____) AS subquery
JOIN ____ AS c
ON ____
-- Group by any unaggregated fields
GROUP BY ____
-- Order to show most events at the top
ORDER BY ____;