Window Function: RANK() OVER (ORDER BY ...)
MySQL 8.0+ এ RANK() উইন্ডো ফাংশন দিয়ে প্রতিটি সারির র্যাঙ্ক বের করা যায়। সমান মানের জন্য একই র্যাঙ্ক, পরবর্তী র্যাঙ্ক স্কিপ হয়।
নমুনা টেবিল ও ডেটা
mysql> CREATE TABLE RankDemo (id INT); mysql> INSERT INTO RankDemo VALUES (1), (3), (3), (4), (5); mysql> SELECT * FROM RankDemo; +------+ | id | +------+ | 1 | | 3 | | 3 | | 4 | | 5 | +------+
RANK() কোয়েরি
mysql> SELECT id, RANK() OVER (ORDER BY id) AS Ranking FROM RankDemo; +------+---------+ | id | Ranking | +------+---------+ | 1 | 1 | | 3 | 2 | | 3 | 2 | | 4 | 4 | | 5 | 5 | +------+---------+
ব্যাখ্যা: id=3 দুবার এসেছে → উভয়ে র্যাঙ্ক ২। পরবর্তী id=4 র্যাঙ্ক ৪ (৩ স্কিপ)। DENSE_RANK() ব্যবহার করলে স্কিপ হয় না (১,২,২,৩,৪)।