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.
MySQL's ROW_NUMBER() by Susan Holt Simpson on Unsplash
आज के data-driven world में, databases का सही use करना बहुत जरूरी है। MySQL एक popular database management system है जो developers और DBAs के बीच काफी famous है।
अगर आप data को organize करना चाहते हैं या किसी result set में unique numbering चाहिए, तो ROW_NUMBER() function आपके लिए बहुत useful है।
इस blog में हम detail में समझेंगे कि MySQL में ROW_NUMBER() क्या है, इसका syntax क्या है, और real-life में इसका कैसे use कर सकते हैं। साथ ही, कुछ practical examples भी देखेंगे जो आपके daily SQL queries को और powerful बना देंगे।
●●●
ROW_NUMBER() एक window function है जो result set के हर row को एक unique sequential number assign करता है। ये numbering 1 से start होती है और हर row के लिए increment होती है।
इसका use आप data को order करने, rank देने, या pagination के लिए कर सकते हैं।
Syntax
SELECT
column1,
column2,
ROW_NUMBER() OVER (PARTITION BY columnX ORDER BY columnY) AS row_num
FROM table_name; PARTITION BY : Optional है, इससे आप data को groups में divide कर सकते हैं।
ORDER BY : ये specify करता है कि numbering किस order में assign होगी।
●●●
Suppose , आपके पास एक employees table है जिसमे employees के नाम, department, और salary है।
अगर आप हर department के अंदर employees को salary के descending order में rank करना चाहते हैं, तो आप ROW_NUMBER() का use कर सकते हैं।
SELECT
employee_name,
department,
salary,
ROW_NUMBER() OVER (PARTITION BY department ORDER BY salary DESC) AS rank
FROM employees;इस query में हर department के employees को उनकी salary के according से rank मिलेगा, जिसमे सबसे ज़्यादा salary wale को 1 मिलेगा।
●●●
Web applications में जब आपको data को pages में दिखाना होता है, तो ROW_NUMBER() बहुत useful होता है। आप rows को number कर के easily specific page के records fetch कर सकते हैं।
WITH NumberedEmployees AS (
SELECT
employee_name,
ROW_NUMBER() OVER (ORDER BY employee_id) AS row_num
FROM employees
)
SELECT * FROM NumberedEmployees
WHERE row_num BETWEEN 11 AND 20; -- Page 2 ke records (assuming 10 per page)अगर आपको हर department के top 3 highest salary wale employees चाहिए, तो ROW_NUMBER() से ये काम आसानी से हो जाता है।
SELECT * FROM (
SELECT
employee_name,
department,
salary,
ROW_NUMBER() OVER (PARTITION BY department ORDER BY salary DESC) AS rn
FROM employees
) AS ranked_employees
WHERE rn <= 3;●●●
ROW_NUMBER() हर row को unique number देता है, चाहे values same हो या न हो।
RANK() और DENSE_RANK() में ties के case में same rank मिलता है, लेकिन numbering में फर्क होता है।
अगर आपको strictly unique numbering चाहिए, तो ROW_NUMBER() best है।
MySQL ROW_NUMBER() एक powerful window function है जो rows को sequential number assign करता है। इसका use pagination, duplicate removal, और top-N queries में होता है।
अगर आप complex reports या dashboards बना रहे हैं, तो ROW_NUMBER() आपके लिए बहुत useful होगा।
●●●
Loading ...