SQL RANK() Function – पूरी जानकारी हिंदी में
🧠 Memory (Definition)
RANK() एक SQL Window Function है जो किसी partition और order के आधार पर rows को rank देता है।
अगर दो या दो से अधिक rows के values same हों, तो उन्हें same rank मिलती है और अगली rank skip कर दी जाती है।
📘 Syntax:
RANK() OVER (
PARTITION BY column_name
ORDER BY column_name
) AS RankAlias
- PARTITION BY – Optional है, इसका उपयोग group बनाने के लिए होता है।
- ORDER BY – इसी के अनुसार ranking होती है।
💻 Example: Demo Table
👉 Step 1: Table बनाएं और Data डालें:
CREATE TABLE Employee (
Id INT,
Name VARCHAR(100),
Department VARCHAR(50),
Salary INT
);
INSERT INTO Employee VALUES
(1, 'Amit', 'HR', 30000),
(2, 'Suman', 'HR', 30000),
(3, 'Raj', 'IT', 50000),
(4, 'Komal', 'IT', 45000),
(5, 'Ravi', 'IT', 45000),
(6, 'Anjali', 'IT', 40000);
👉 Step 2: RANK() Function Apply करें:
SELECT
Name,
Department,
Salary,
RANK() OVER (PARTITION BY Department ORDER BY Salary DESC) AS RankInDept
FROM Employee;
📤 Output:
| Name | Department | Salary | RankInDept |
|---|---|---|---|
| Amit | HR | 30000 | 1 |
| Suman | HR | 30000 | 1 |
| Raj | IT | 50000 | 1 |
| Komal | IT | 45000 | 2 |
| Ravi | IT | 45000 | 2 |
| Anjali | IT | 40000 | 4 |
🔎 Note: Tie (same salary) होने पर same rank दी जाती है और उसके बाद वाली rank skip हो जाती है।
🎯 Use Cases:
- Top N salaries per department
- Competition ranking with tie
- Reporting with hierarchical data
💼 Interview Questions:
-
RANK() और ROW_NUMBER() में क्या अंतर है?
ROW_NUMBER हर row को unique number देता है। RANK() में tie होने पर same rank दी जाती है और rank skip होती है। -
RANK() और DENSE_RANK() में क्या अंतर है?
RANK() rank skip करता है, DENSE_RANK() नहीं करता। -
Real-world example क्या हो सकता है?
जैसे प्रतियोगिता में अगर दो व्यक्ति 1st आए, तो अगला 3rd होगा (2nd skip)।
✅ Conclusion:
SQL का RANK() function tie के साथ ranking देने के लिए बहुत उपयोगी है। अगर आप चाहते हैं कि tied values को same rank मिले और अगली rank skip हो — तो RANK() सही विकल्प है।
0 Comments