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

MySQL-এ COUNT() এবং GROUP BY দিয়ে কমন এলিমেন্ট (সামান্য মান) গড়ে বের করা

MySQL-এ একটি কলামে কোন মান কতবার এসেছে (ফিকোয়েন্সি) জানতে COUNT() এবং GROUP BY একসাথে ব্যবহার করা হয়।

টেবিল তৈরি এবং ডেটা ইনসার্ট

mysql> CREATE TABLE DemoTable (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Number INT
    -> );
mysql> INSERT INTO DemoTable(Number) VALUES(10);
mysql> INSERT INTO DemoTable(Number) VALUES(20);
mysql> INSERT INTO DemoTable(Number) VALUES(20);
mysql> INSERT INTO DemoTable(Number) VALUES(30);
mysql> INSERT INTO DemoTable(Number) VALUES(10);
mysql> INSERT INTO DemoTable(Number) VALUES(10);

সব রেকর্ড দেখুন

mysql> SELECT * FROM DemoTable;
+----+--------+
| Id | Number |
+----+--------+
|  1 |     10 |
|  2 |     20 |
|  3 |     20 |
|  4 |     30 |
|  5 |     10 |
|  6 |     10 |
+----+--------+

প্রতিটি সংখ্যার ফিকোয়েন্সি গড়ে বের করা

mysql> SELECT Number, COUNT(Number) AS CommonElement 
    -> FROM DemoTable 
    -> GROUP BY Number;

ফলাফল

+--------+---------------+
| Number | CommonElement |
+--------+---------------+
|     10 |             3 |
|     20 |             2 |
|     30 |             1 |
+--------+---------------+

ব্যাখ্যা:

  • ১০ - ৩ বার
  • ২০ - ২ বার
  • ৩০ - ১ বার

শুধু ডুপ্লিকেট (২+ বার এসেছে) দেখতে

SELECT Number, COUNT(*) AS freq
FROM DemoTable
GROUP BY Number
HAVING COUNT(*) > 1;
+--------+------+
| Number | freq |
+--------+------+
|     10 |    3 |
|     20 |    2 |
+--------+------+

সর্বোচ্চ ফিকোয়েন্সি বা টপ-N

-- সবচেয়ে বেশি বার এসেছে
SELECT Number, COUNT(*) AS freq
FROM DemoTable
GROUP BY Number
ORDER BY freq DESC
LIMIT 1;

পারফরম্যান্স টিপস

  • Number কলামে ইনডেক্স থাকলে GROUP BY দ্রুত হবে
  • বড় টেবিলে COUNT(*) বরং COUNT(Number) ব্যবহার করুন (NULL বাদ দেয়)
  1. MySQL-এ কমপক্ষে x সংখ্যক সারি পেতে কীভাবে?

  2. MySQL-এ INFORMATION_SCHEMA ব্যবহার করে টেবিলের কলাম সংখ্যা বের করা

  3. MySQL-এ শর্তসাপেক্ষে কাউন্ট করা (SUM ও WHERE ব্যবহার করে)

  4. পাইথনে ডাইনোসর গণনা করুন