SQL ROW_NUMBER() क्या है?

SQL ROW_NUMBER() क्या है?

ROW_NUMBER() क्या है? (SQL में)

Memory (Definition):
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 को हटाना हो।

Post a Comment

0 Comments