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 বাদ দেয়)