ค้นหา 3 ค่าสูงสุดในแต่ละ Partition
คุณทำงานให้กับหน่วยงานอุตุนิยมวิทยา และผู้อำนวยการสถานีได้มอบหมายให้คุณระบุอุณหภูมิรายเดือนที่สูงที่สุด 3 อันดับแรกของแต่ละสถานีตรวจวัดอากาศในปี 2017 เพื่อให้ได้ผลลัพธ์นี้ จำเป็นต้องสร้าง window function สำหรับกำหนดหมายเลขแถว
เนื่องจากต้องการค้นหาอุณหภูมิรายเดือนที่สูงที่สุด ให้เรียงลำดับตาม t_monthly_max จากมากไปน้อย เพื่อให้อุณหภูมิที่สูงที่สุดได้รับหมายเลขก่อน
มีตารางสองตารางให้ใช้งาน ได้แก่ temperatures_monthly และ temperature_stations
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์อนุกรมเวลาใน PostgreSQL
คำแนะนำการฝึกหัด
- ค้นหาอุณหภูมิรายเดือนที่สูงที่สุด 3 อันดับแรกของแต่ละ
station_idและstateที่เกี่ยวข้อง สำหรับปี 2017
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
-- Three highest monthly temps per station for 2017
SELECT * FROM
( SELECT
ts.station_id,
ts.state,
tm.year_month,
tm.t_monthly_max,
___ AS rank
FROM temperatures_monthly AS tm
JOIN temperature_stations AS ts USING(station_id)
WHERE ___
) AS temp_2017
WHERE ___
ORDER BY station_id, ___;