Shiran.Tips

תצורות הדירוג

March 12, 2019 | 1 Minute Read

SQL#

והפעם- על ההבדלים בין שתי האופציות לדירוג ערכים ()rank ו-()dense rank

הבעיה שלנו היא ש..

אנחנו רוצים להבין מהן פונקציות הדירוג הקיימות ומה ההבדלים ביניהם.

הטיפ שלי

קיימות שתי פונקציות לדירוג: rank() ו-dense_rank()

פונקציית rank() תדרג את הערכים בעמודה שנגדיר מ-1 ומעלה, אך במידה ויהיו מספר ערכים זהים הם גם יהיו שווים בדירוג, ודירוג הערך הבא לא יהיה מספר עקיב, אלא יהיה שווה לדירוג הקודם + מספר הפעמים שהדירוג הקודם הופיע.

באמצעות partition by נוכל להגדיר חלוקה של הדירוג למקטעים, כך שיסתיים במקטע אחד ויתחיל מההתחלה באחר.

פונקציית ()dense_rank תדרג את הערכים בעמודה שנגדיר מ-1 ומעלה ובצורה עקבית. כלומר, במידה ויהיו מספר ערכים זהים הם יהיו שווים גם בדירוג, אך הערך הבא יהיה שווה לדירוג הקודם +1.

בואו ננסה את זה בפועל

הטבלה שלנו:

Competitor Year Points
Donna 2016 100
Dani 2017 99
Shimon 2017 100
Zlil 2018 50
Gil 2017 80
Mor 2018 70  

הפקודות שנבצע:

פונקצית rank()

תוצאה:

Competitor Year Points rank
Donna 2016 100 1
Shimon 2017 100 1
Dani 2017 99 3
Gil 2017 80 4
Mor 2018 70 5
Zlil 2018 50 6

פונקצית dense_rank()

תוצאה:

Competitor Year Points dense_rank
Donna 2016 100 1
Shimon 2017 100 1
Dani 2017 99 2
Gil 2017 80 3
Mor 2018 70 1
Zlil 2018 50 2

רוצה להשאר מעודכנ/ת?

* שדה חובה