ต้องการใช้ row_number() คัดเฉพาะ 2 อันดับแรกของแต่ละแผนกใน PostgreSQL ควรวางเงื่อนไขกรองอย่างไร?

กคำนวณ row_number() ใน WHERE ของ query เดียวกันก่อนเลือกคอลัมน์แล้วกรองทันที
ขคำนวณ row_number() ใน GROUP BY ของ query เดียวกันก่อนจัดกลุ่มแล้วกรองทันที
คคำนวณ row_number() ใน sub-select แล้วกรองเลขลำดับใน query ชั้นนอก
งคำนวณ row_number() ใน HAVING ของ query เดียวกันหลังรวมกลุ่มแล้วกรองทันที

เฉลยอธิบาย

Window function ทำงานหลังการประมวลผล WHERE, GROUP BY และ HAVING จึงนำ row_number ไปกรองโดยตรงในส่วนเหล่านั้นของคิวรีเดียวกันไม่ได้ ควรคำนวณเลขลำดับใน sub-select ก่อน แล้วให้คิวรีชั้นนอกกรองเฉพาะเลขลำดับที่ต้องการ

ข้อสอบอื่นในวิชาความรู้เกี่ยวกับระบบฐานข้อมูล (Database System) และ ระบบการบริหารจัดการข้อมูล (Database Management System)

ดูข้อสอบวิชานี้ทั้งหมด →