কম্পিউটার টিউটোরিয়াল

MySQL-এ একটি কলামের nth সর্বোচ্চ মান বের করা

একটি কলামের nth সর্বোচ্চ মান বের করতে ORDER BY DESC সহ LIMIT ক্লজ ব্যবহার করতে হয়। যদি কলামের দ্বিতীয় সর্বোচ্চ মান চান, তবে নিচের সিনট্যাক্স ব্যবহার করুন:

SELECT *FROM yourTableName ORDER BY DESC yourColumnName LIMIT 1,1;

যদি চতুর্থ সর্বোচ্চ মান চান, তবে নিচের সিনট্যাক্স ব্যবহার করুন:

SELECT *FROM yourTableName ORDER BY DESC yourColumnName LIMIT 3,1;

যদি প্রথম সর্বোচ্চ মান চান, তবে নিচের সিনট্যাক্স ব্যবহার করুন:

SELECT *FROM yourTableName ORDER BY DESC yourColumnName LIMIT 1;

উপরের সিনট্যাক্সে শুধু LIMIT ক্লজে পরিবর্তন আনতে হয়। এটি বুঝতে একটি টেবিল তৈরি করা যাক। টেবিল তৈরির কোয়েরি:

mysql> create table NthSalaryDemo  
    -> (  
    -> Id int NOT NULL AUTO_INCREMENT,  
    -> Name varchar(10),  
    -> Salary int,  
    -> PRIMARY KEY(Id)  
    -> ); Query OK, 0 rows affected (1.03 sec)

ইনসার্ট কমান্ড দিয়ে কিছু রেকর্ড ইনসার্ট করা যাক। কোয়েরিটি হলো:

mysql> insert into NthSalaryDemo(Name,Salary) values('Larry',5700); Query OK, 1 row affected (0.41 sec) mysql> insert into NthSalaryDemo(Name,Salary) values('Sam',6000); Query OK, 1 row affected (0.16 sec) mysql> insert into NthSalaryDemo(Name,Salary) values('Mike',5800); Query OK, 1 row affected (0.16 sec) mysql> insert into NthSalaryDemo(Name,Salary) values('Carol',4500); Query OK, 1 row affected (0.17 sec) mysql> insert into NthSalaryDemo(Name,Salary) values('Bob',4900); Query OK, 1 row affected (0.20 sec) mysql> insert into NthSalaryDemo(Name,Salary) values('David',5400); Query OK, 1 row affected (0.27 sec) mysql> insert into NthSalaryDemo(Name,Salary) values('Maxwell',5300); Query OK, 1 row affected (0.21 sec) mysql> insert into NthSalaryDemo(Name,Salary) values('James',4000); Query OK, 1 row affected (0.19 sec) mysql> insert into NthSalaryDemo(Name,Salary) values('Robert',4600); Query OK, 1 row affected (0.19 sec)

সিলেক্ট স্টেটমেন্ট দিয়ে সব রেকর্ড দেখানো যাক। কোয়েরিটি হলো:

mysql> select *from NthSalaryDemo;

আউটপুট নিচে দেওয়া হলো:

+----+---------+--------+ | Id | Name    | Salary | +----+---------+--------+ |  1 | Larry   |  5700 | |  2 | Sam     |  6000 | |  3 | Mike    |  5800 | |  4 | Carol   |  4500 | |  5 | Bob     |  4900 | |  6 | David   |  5400 | |  7 | Maxwell | 5300 | |  8 | James   | 4000 | |  9 | Robert  | 4600 | +----+---------+--------+ 9 rows in set (0.00 sec)

কেস ১: কলামের nth সর্বোচ্চ মান বের করার কোয়েরি নিচে দেওয়া হলো। নিচের কোয়েরি Salary কলামের চতুর্থ সর্বোচ্চ মান দেবে:

mysql> select *from NthSalaryDemo order by Salary desc limit 3,1;

আউটপুট:

+----+-------+--------+ | Id | Name | Salary | +----+-------+--------+ | 6 | David | 5400 | +----+-------+--------+ 1 row in set (0.00 sec)

কেস ২: Salary কলামের দ্বিতীয় সর্বোচ্চ মান বের করার কোয়েরি:

mysql> select *from NthSalaryDemo order by Salary desc limit 1,1;

আউটপুট:

+----+------+--------+ | Id | Name | Salary | +----+------+--------+ | 3 | Mike | 5800 | +----+------+--------+ 1 row in set (0.00 sec)

কেস ৩: কলামের প্রথম সর্বোচ্চ মান বের করার কোয়েরি:

mysql> select *from NthSalaryDemo order by Salary desc limit 1;

আউটপুট:

+----+------+--------+ | Id | Name | Salary | +----+------+--------+ | 2 | Sam | 6000 | +----+------+--------+ 1 row in set (0.00 sec)

কেস ৪: যদি Salary কলামের ৮ম সর্বোচ্চ মান চান, তবে নিচের কোয়েরি ব্যবহার করুন:

mysql> select *from NthSalaryDemo order by Salary desc limit 7,1;

আউটপুট:

+----+-------+--------+ | Id | Name  | Salary | +----+-------+--------+ |  4 | Carol | 4500 | +----+-------+--------+ 1 row in set (0.00 sec)

ব্যাখ্যা: ORDER BY column DESC দিয়ে ডেসেন্ডিং অর্ডারে সাজিয়ে LIMIT offset, 1 দিয়ে nth সর্বোচ্চ মান বের করা হয়। এখানে offset = n-1। MySQL 8.0+ এ DENSE_RANK() বা ROW_NUMBER() উইন্ডো ফাংশন ব্যবহার করে ডুপ্লিকেট ভ্যালু হ্যান্ডলিং সহজ হয়।

  1. MySQL-এ নির্দিষ্ট কলাম নামে টেবিল খুঁজে বের করা

  2. MySQL-এ ZEROFILL ব্যবহার করে কলাম মান 앞에 ০০০ যোগ করা

  3. MySQL-এ VARCHAR কলাম থেকে সর্বোচ্চ সংখ্যাগত মান বের করা

  4. MySQL-এ কলামের সর্বোচ্চ মান বের করা (Find Maximum Value in a Column)