การจัดอันดับ ⤢ ROW_NUMBER()จำนวนเต็มเรียงตามลำดับที่ไม่ซ้ำกัน ต่อหนึ่งแถวใน window ROW_NUMBER() OVER (ORDER BY total DESC) ⤢ RANK()อันดับแบบมีช่องว่าง แถวที่ค่าเท่ากันได้อันดับเดียวกันและข้ามเลขถัดไป RANK() OVER (ORDER BY total DESC) ⤢ DENSE_RANK()อันดับแบบไม่มีช่องว่าง แถวที่ค่าเท่ากันได้อันดับเดียวกันโดยไม่ข้ามเลขใด DENSE_RANK() OVER (ORDER BY total DESC) ⤢ NTILE(n)แบ่ง window ที่เรียงแล้วออกเป็น n กลุ่มที่เท่ากันโดยประมาณ NTILE(4) OVER (ORDER BY total DESC) มองแถวข้างเคียง ⤢ LAG(expr, n, default)ค่าจาก n แถวก่อนหน้า ถ้าไม่มีแถวดังกล่าวจะใช้ค่า default แทน LAG(total, 1, 0) OVER (ORDER BY created_at) ⤢ LEAD(expr, n, default)ค่าจาก n แถวถัดไป ถ้าไม่มีแถวดังกล่าวจะใช้ค่า default แทน LEAD(total, 1, 0) OVER (ORDER BY created_at) การรวมค่าบน window ⤢ SUM() OVERยอดรวมแบบสะสมหรือราย partition โดยไม่ยุบแถว SUM(total) OVER (ORDER BY created_at) ⤢ AVG() OVERค่าเฉลี่ยแบบสะสมหรือราย partition AVG(total) OVER (PARTITION BY user_id) ⤢ COUNT() OVERจำนวนแถวแบบสะสมหรือราย partition COUNT(*) OVER (PARTITION BY user_id) ⤢ MIN() OVERค่าต่ำสุดใน window หรือ partition MIN(total) OVER (PARTITION BY user_id) ⤢ MAX() OVERค่าสูงสุดใน window หรือ partition MAX(total) OVER (PARTITION BY user_id) ⤢ Running totalSUM พร้อม ORDER BY และ frame ที่เปิดจากจุดเริ่มต้น แต่ละแถวบวกสะสมทุกค่าจนถึงตัวเอง SUM(total) OVER (ORDER BY created_at ROWS UNBOUNDED PRECEDING) ⤢ Moving averageAVG บน frame ที่มี n แถวก่อนและหลังแถวปัจจุบัน AVG(total) OVER (ORDER BY created_at ROWS BETWEEN 2 PRECEDING AND 2 FOLLOWING) ค่าแรก ค่าสุดท้าย และเปอร์เซ็นไทล์ ⤢ FIRST_VALUE()ค่าแรกในลำดับการเรียงของ window FIRST_VALUE(total) OVER (ORDER BY total DESC) ⤢ LAST_VALUE()ค่าสุดท้ายใน frame ถ้าไม่มี UNBOUNDED FOLLOWING เฟรมจะหยุดที่แถวปัจจุบัน LAST_VALUE(total) OVER (ORDER BY total ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) ⤢ NTH_VALUE(expr, n)ค่าที่แถวลำดับที่ n ของ window NTH_VALUE(total, 2) OVER (ORDER BY total DESC) ⤢ PERCENT_RANK()อันดับสัมพัทธ์ของแถว อยู่ในช่วง 0 ถึง 1 PERCENT_RANK() OVER (ORDER BY total) ⤢ CUME_DIST()สัดส่วนของแถวที่อยู่ถึงแถวปัจจุบัน ตั้งแต่ 1/n สูงสุดถึง 1 CUME_DIST() OVER (ORDER BY total) อนุประโยค OVER ⤢ OVER (...)กำหนด window ที่ทุกฟังก์ชันอ่าน <fn>() OVER (PARTITION BY user_id ORDER BY created_at) ⤢ PARTITION BYเริ่ม window ใหม่สำหรับแต่ละกลุ่มแถว PARTITION BY user_id ⤢ ORDER BYจัดลำดับแถวภายในแต่ละ partition ORDER BY created_at ⤢ ROWS BETWEENกำหนดขอบเขตของ frame เลื่อน เช่น จากแถวก่อนหน้าถึงแถวถัดไป ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING ⤢ RANGE BETWEENกำหนดขอบเขต frame ด้วยค่า ไม่ใช่ตำแหน่งแถว CURRENT ROW รวมแถวที่ค่าเท่ากัน และนี่คือ frame เริ่มต้นเมื่อมี ORDER BY RANGE BETWEEN 100 PRECEDING AND CURRENT ROW ⤢ GROUPS BETWEENกำหนดขอบเขต frame ด้วยกลุ่มแถวที่ค่าเท่ากันจาก ORDER BY GROUPS BETWEEN 1 PRECEDING AND CURRENT ROW ⤢ EXCLUDE CURRENT ROWเอาแถวปัจจุบันออกจาก frame ส่วน EXCLUDE TIES เอาแถวที่ค่าเท่ากันออกแทน ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING EXCLUDE CURRENT ROW ⤢ WINDOWตั้งชื่อ window ครั้งเดียวต่อหนึ่ง query เพื่อให้หลายอนุประโยค OVER ใช้ซ้ำได้ WINDOW w AS (PARTITION BY user_id ORDER BY created_at) ⤢ FILTER (WHERE ...)กรองแถวที่ aggregate ของ window อ่าน ก่อนที่ window จะถูกนำมาใช้ SUM(total) FILTER (WHERE status = 'paid') OVER (ORDER BY created_at)