คิวรีแบบ UNION แล้วตามด้วย JOIN
เป้าหมายคือสร้างรายงานในรูปแบบเดิม ซึ่งประกอบด้วยฟิลด์ดังต่อไปนี้:
- season ซึ่งแสดงค่า
summerหรือwinter - country
- events ซึ่งแสดงจำนวน event ที่ไม่ซ้ำกัน
ในแบบฝึกหัดนี้ ให้สร้างคิวรีโดยใช้แนวทาง UNION ก่อน แล้วจึง JOIN ซึ่งเมื่อใช้แนวทางนี้ จะต้องนำคิวรี UNION เริ่มต้นมาใช้เป็นซับคิวรี โดยซับคิวรีต้องครอบคลุม ทุกฟิลด์ ที่เกี่ยวข้อง รวมถึงฟิลด์ที่ใช้ใน join ด้วย
สามารถอ้างอิง E:R Diagram ได้ตลอดเวลา
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การรายงานผลด้วย SQL
คำแนะนำการฝึกหัด
- ในซับคิวรี ให้สร้างคิวรีที่ดึงข้อมูล
season,country_idและeventโดยรวมข้อมูลเกมฤดูร้อนและฤดูหนาวเข้าด้วยกันด้วยUNION ALL - ใช้
JOINร่วมกับSELECTอีกชั้นเพื่อแสดงฟิลด์season,countryและจำนวนeventsที่ไม่ซ้ำกัน - ใส่ฟิลด์ที่ไม่ได้ถูก aggregate ทั้งหมดลงใน
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 ____;