ฟังก์ชัน SQL DENSE_RANK()

Fangkchan Sql Dense Rank



ฟังก์ชันหน้าต่างเป็นคุณลักษณะที่สำคัญใน SQL และมีบทบาทพื้นฐานในการคำนวณข้อมูลที่ซับซ้อนและการดำเนินการในฐานข้อมูล SQL หนึ่งในฟังก์ชันในฟังก์ชันหน้าต่าง SQL คือหนาแน่น_อันดับ()

ฟังก์ชัน DENSE_RANK() ช่วยให้เราสามารถกำหนดอันดับที่ไม่ซ้ำกันให้กับแต่ละแถวภายในชุดผลลัพธ์ตามค่าในคอลัมน์ที่ระบุอีกหนึ่งคอลัมน์ คล้ายกับฟังก์ชัน rank() มาก แต่มีความแตกต่างเล็กน้อยในวิธีที่ฟังก์ชันจัดการกับบันทึกที่ซ้ำกัน

ในบทช่วยสอนนี้ เราจะสำรวจว่าฟังก์ชันนี้ทำงานอย่างไร ไวยากรณ์ที่ให้มา และเราสามารถใช้ฟังก์ชันนี้ในฐานข้อมูลได้อย่างไร







มันทำงานอย่างไร

ให้เราเริ่มต้นด้วยการอธิบายว่าฟังก์ชันนี้ทำงานอย่างไร โปรดจำไว้ว่าฟังก์ชันนี้อยู่ในระดับสูง และเราไม่สามารถอธิบายการใช้งานที่สำคัญได้



ฟังก์ชันนี้ทำงานโดยการกำหนดอันดับให้กับแต่ละแถวในชุดผลลัพธ์โดยเริ่มจากอันดับ 1 และเพิ่มขึ้น 1 สำหรับแต่ละค่าที่ไม่ซ้ำกันในคอลัมน์



แถวที่มีค่าใกล้เคียงกัน (ซ้ำกัน) ในคอลัมน์ที่ระบุจะถูกกำหนดด้วยอันดับเดียวกัน และแถวถัดไปที่มีค่าต่างกันจะถูกกำหนดด้วยอันดับถัดไปที่มีอยู่ โดยไม่มีช่องว่างใดๆ





ดังที่เราได้กล่าวไปแล้ว ฟังก์ชันนี้จะไม่ทิ้งช่องว่างใดๆ ที่มีค่าซ้ำกัน ซึ่งทำให้แตกต่างจากฟังก์ชัน rank()

การใช้งานฟังก์ชันหนาแน่น_rank() โดยทั่วไปคือการดำเนินการจัดอันดับ ตัวอย่างเช่น เราสามารถใช้มันเพื่อค้นหาระเบียน N อันดับต้นๆ เป็นต้น



ไวยากรณ์ของฟังก์ชัน:

ต่อไปนี้จะอธิบายไวยากรณ์ของฟังก์ชันหนาแน่น_rank():

DENSE_RANK() มากกว่า (

[แบ่งตาม partition_expression, ... ]

คำสั่ง โดย sort_expression [ASC | ดีเอสซี], ...

-

ในไวยากรณ์ที่กำหนด:

  1. เราเริ่มต้นด้วยฟังก์ชันหนาแน่น_rank() เอง
  2. ส่วนคำสั่ง OVER ส่งสัญญาณการเริ่มต้นข้อกำหนดคุณลักษณะของฟังก์ชันหน้าต่าง นี่จะกำหนดวิธีการใช้การจัดอันดับภายในชุดผลลัพธ์
  3. PARTITION BY partition_expression เป็นส่วนคำสั่งทางเลือกที่ช่วยให้เราสามารถแบ่งพาร์ติชันชุดผลลัพธ์ออกเป็นกลุ่มหรือพาร์ติชันตามคอลัมน์ตั้งแต่หนึ่งคอลัมน์ขึ้นไป การจัดอันดับจะถูกใช้แยกกันในแต่ละพาร์ติชัน โดยจะมีการรีเซ็ตอันดับในพาร์ติชันใหม่
  4. ORDER BY sort_expression ระบุลำดับที่เราต้องการใช้เพื่อเรียงลำดับข้อมูลในพาร์ติชั่นผลลัพธ์

ข้อมูลตัวอย่าง

เพื่อสาธิตวิธีการใช้ฟังก์ชัน Dense_rank() ให้เราเริ่มต้นด้วยตารางที่มีข้อมูลตัวอย่าง ในกรณีของเรา เราใช้ตัวอย่างตาราง 'คำสั่งซื้อ' ดังนี้:

ตัวอย่างที่ 1: การใช้งานฟังก์ชัน Dense_Rank()

เราสามารถใช้ฟังก์ชันหนาแน่น_rank() เพื่อจัดอันดับคำสั่งซื้อผลลัพธ์ตามราคา พิจารณาแบบสอบถามตัวอย่างต่อไปนี้:

เลือก

สั่งซื้อ_id,

ลูกค้า_ชื่อผู้ใช้,

สินค้า_ซื้อแล้ว,

DENSE_RANK() มากกว่า (

คำสั่ง โดย

ราคา ดิส

) ราคา_อันดับ

จาก

คำสั่ง o;

ในตัวอย่างที่กำหนด เราใช้ฟังก์ชันหนาแน่น_rank() เพื่อจัดอันดับข้อมูลตามราคาของคำสั่งซื้อ เราละเว้น PARTITION BY clause เนื่องจากเราไม่จัดกลุ่มข้อมูล

ผลลัพธ์ที่ได้จะเป็นดังนี้:

ตัวอย่างที่ 2: การแบ่งส่วนตาม

นอกจากนี้เรายังสามารถเพิ่มส่วนคำสั่ง PARTITION BY เพื่อจัดกลุ่มข้อมูลออกเป็นส่วนต่างๆ เช่น ตามผลิตภัณฑ์ที่ซื้อ

ตัวอย่างแบบสอบถามมีดังนี้:

เลือก

สั่งซื้อ_id,

ลูกค้า_ชื่อผู้ใช้,

สินค้า_ซื้อแล้ว,

DENSE_RANK() สูงกว่า (

พาร์ติชันตาม product_purchased

คำสั่ง โดย

ราคา ดิส

) ราคา_อันดับ

จาก

คำสั่ง o;

ซึ่งควรจัดกลุ่มข้อมูลออกเป็นกลุ่มต่างๆ ตามกลุ่มผลลัพธ์ และใช้อันดับสำหรับรายการในแต่ละกลุ่ม

บทสรุป

ในโพสต์นี้ เราได้เรียนรู้พื้นฐานของการใช้และการทำงานกับฟังก์ชันหน้าต่างหนาแน่น_rank() ใน SQL เพื่อกำหนดอันดับให้กับค่าตามคอลัมน์ที่ระบุ