ডুপ্লিকেট নামের রেকর্ডগুলো স্কোর অনুযায়ী সর্ট করতে WHERE দিয়ে ফিল্টার করে ORDER BY ... DESC ব্যবহার করা হয়।
টেবিল তৈরি ও ডেটা ইনসার্ট
mysql> CREATE TABLE DemoTable788 (FirstName VARCHAR(100), Score INT); Query OK, 0 rows affected (1.89 sec)
mysql> INSERT INTO DemoTable788 VALUES ('Chris', 78);
Query OK, 1 row affected (0.20 sec)
mysql> INSERT INTO DemoTable788 VALUES ('Robert', 67);
Query OK, 1 row affected (0.19 sec)
mysql> INSERT INTO DemoTable788 VALUES ('Chris', 98);
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO DemoTable788 VALUES ('Chris', 56);
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable788 VALUES ('Robert', 43);
Query OK, 1 row affected (0.11 sec)
mysql> INSERT INTO DemoTable788 VALUES ('Robert', 97);
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable788 VALUES ('Chris', 79);
Query OK, 1 row affected (0.12 sec)
সকল রেকর্ড
mysql> SELECT * FROM DemoTable788;
আউটপুট:
+-----------+-------+ | FirstName | Score | +-----------+-------+ | Chris | 78 | | Robert | 67 | | Chris | 98 | | Chris | 56 | | Robert | 43 | | Robert | 97 | | Chris | 79 | +-----------+-------+ 7 rows in set (0.00 sec)
'Chris' নামের রেকর্ড স্কোর অনুযায়ী নিম্নক্রমে সর্ট
mysql> SELECT Score FROM DemoTable788 WHERE FirstName = 'Chris' ORDER BY Score DESC;
ফলাফল:
+-------+ | Score | +-------+ | 98 | | 79 | | 78 | | 56 | +-------+ 4 rows in set (0.00 sec)
ব্যাখ্যা
WHERE FirstName = 'Chris'- শুধু Chris-এর রেকর্ড ফিল্টার।ORDER BY Score DESC- স্কোর বড় থেকে ছোট ক্রমে সাজায়।ASC(ডিফল্ট) ছোট থেকে বড়।
সব নামের জন্য আলাদা আলাদা সর্ট (Window Function - MySQL 8.0+)
SELECT FirstName, Score,
ROW_NUMBER() OVER (PARTITION BY FirstName ORDER BY Score DESC) AS rn
FROM DemoTable788;