ROW_NUMBER() क्या है? (SQL में)
Memory (Definition):
ROW_NUMBER() एक window function है जो प्रत्येक row को एक unique sequential नंबर assign करता है, जो दिए गए partition और order के आधार पर होता है।
ROW_NUMBER() एक window function है जो प्रत्येक row को एक unique sequential नंबर assign करता है, जो दिए गए partition और order के आधार पर होता है।
📌 Syntax:
ROW_NUMBER() OVER (
PARTITION BY column_name
ORDER BY column_name
) AS row_alias
📘 Example with Demo Table:
👉 Step 1: Create Table and Insert 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', 28000),
(3, 'Raj', 'IT', 50000),
(4, 'Komal', 'IT', 45000),
(5, 'Ravi', 'IT', 40000);
👉 Step 2: Apply ROW_NUMBER()
SELECT Name, Department, Salary, ROW_NUMBER() OVER(PARTITION BY Department ORDER BY Salary DESC) AS RowNum FROM Employee;
Output:
Name | Department | Salary | RowNum
---------------------------------------
Amit | HR | 30000 | 1
Suman | HR | 28000 | 2
Raj | IT | 50000 | 1
Komal | IT | 45000 | 2
Ravi | IT | 40000 | 3
🎯 Use Case:
- हर ग्रुप (जैसे department) के अंदर सबसे ज्यादा सैलरी पाने वाले employee को ढूँढना
- Duplicate रिकॉर्ड हटाना
- Pagination के लिए
💼 Interview Questions:
- ROW_NUMBER() और RANK() में क्या अंतर है?
- ROW_NUMBER() को कब prefer करना चाहिए?
- ROW_NUMBER() का practical use कब और कैसे होता है?
💼 Interview Questions:
-
Q1. ROW_NUMBER() किस प्रकार का Function है?
A. यह एक Ranking Window Function है। -
Q2. क्या ROW_NUMBER() के साथ ORDER BY आवश्यक है?
A. हां, ORDER BY अनिवार्य है। -
Q3. ROW_NUMBER() और RANK() में अंतर क्या है?
A. ROW_NUMBER() में Duplicate rows को भी Unique Number मिलता है, जबकि RANK() में एक ही रैंक Repeat हो -
Q4. Pagination के लिए ROW_NUMBER() कैसे उपयोग होता है?
A. आप WHERE में RowNum filter करके Paging कर सकते हैं। -
Q5. क्या हम DELETE कर सकते हैं duplicate rows को ROW_NUMBER() से?
A. हां, CTE का उपयोग करके संभव है।
👉 Use Case: Duplicate Rows हटाना
WITH RankedStudents AS ( SELECT *, ROW_NUMBER() OVER (PARTITION BY Name, Class ORDER BY StudentID) AS rn FROM Students ) DELETE FROM RankedStudents WHERE rn > 1;
🧮 Pagination Example:
WITH Page AS ( SELECT *, ROW_NUMBER() OVER (ORDER BY StudentID) AS RowNum FROM Students ) SELECT * FROM Page WHERE RowNum BETWEEN 6 AND 10;
✅ Conclusion:
ROW_NUMBER() SQL Server में बहुत ही powerful function है जब हमें records को uniquely enumerate करने की जरूरत होती है – चाहे वो pagination हो, top N records निकालना हो, या duplicates को हटाना हो।
0 Comments