If tutorials available on this website are helpful for you, please whitelist this website in your ad blocker😭 or Donate to help us ❤️ pay for the web hosting to keep the website running.
RANK() vs DENSE_RANK() by Joshua Golde on Unsplash
आज के modern data analysis और reporting में ranking functions काफी important role play करते हैं। अगर आप MySQL use करते हैं, तो शायद आपने RANK() और DENSE_RANK() functions के बारे में सुना होगा।
लेकिन क्या आप जानते हैं कि ये दोनो functions कैसे काम करते हैं और इनमे
क्या फर्क है? इस blog में हम MySQL के RANK() और DENSE_RANK() functions को detail में समझेंगे, examples के साथ, ताकि आप अपने queries में इनका सही use कर सकें।
Ranking functions SQL के window functions होते हैं जो rows को किसी order के according से rank करते हैं।
ये functions तब useful होते हैं जब आपको data को order करना हो और हर row को एक rank assign करना हो, जैसे कि leaderboard, sales ranking, या किसी भी ordered list में position दिखानी हो।
●●●
`RANK()` function rows को order करता है और उन्हें rank assign करता है। अगर दो या ज़्यादा rows कि value same होती है (tie होता है), तो उन्हें same rank मिलता है, लेकिन अगला rank gap के साथ assign होता है।
SELECT
employee_name,
department,
salary,
RANK() OVER (PARTITION BY department ORDER BY salary DESC) AS rank
FROM employees;अगर दो employees कि salary same है, दोनो को same rank मिलेगा, लेकिन अगला rank उस gap के according आगे बढ़ेगा।
जैसे अगर दो log rank 1 पर हैं, तो अगला rank 3 होगा (2 नहीं).
●●●
DENSE_RANK() भी ranking assign करता है, लेकिन ये gap नहीं छोड़ता। अगर दो या ज़्यादा rows कि value same होती है, तो उन्हें same rank मिलता है, और अगला rank उसके तुरंत बाद आता है।
SELECT
employee_name,
department,
salary,
DENSE_RANK() OVER (PARTITION BY department ORDER BY salary DESC) AS dense_rank
FROM employees;इस example में अगर दो employees rank 1 पर हैं, तो अगला rank 2 होगा, बिना किसी gap के।
●●●
| Feature | RANK() | DENSE_RANK() |
Rank Assignment | Tie होने पर same rank, gap छोड़ेगा। | Tie होने पर same rank, gap नहीं छोड़ेगा। |
Next Rank Value | Gap के साथ next rank assign करता है | next rank तुरंत assign करता है। |
Use Case | जब आपको gap चाहिए ranking में | जब continuous ranking चाहिए without gaps |
●●●
suppose हमारे पास employees table हाँ जिसमे employee, salary column हैं।
| employee | salary |
A | 5000 |
B | 5000 |
C | 4000 |
D | 3000 |
RANK() assign करेगा : A=1, B=1, C=3, D=4
DENSE_RANK() assign करेगा : A=1, B=1, C=2, D=3
RANK() तब use करें जब आपको ranking में gaps चाहिए, जैसे कि competition में ties के बाद अगला position skip करना।
DENSE_RANK() तब use करें जब आपको continuous ranking चाहिए बिना किसी gap के, जैसे कि sales reports या leaderboard जहाँ हर position important हो।
●●●
Loading ...