Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

นับจำนวนครั้งที่ค่าซ้ำในคอลัมน์ MySQL ด้วย COUNT และ GROUP BY

การใช้ Aggregate Function COUNT() กับ GROUP BY

จัดกลุ่มข้อมูลตามค่าของคอลัมน์ แล้วนับจำนวนแถวในแต่ละกลุ่ม

รูปแบบคำสั่ง

SELECT yourColumnName, COUNT(*) AS anyVariableName 
FROM yourTableName 
GROUP BY yourColumnName;

ตัวอย่างสร้างตารางและข้อมูล

mysql> CREATE TABLE CountSameValue (
    -> Id INT,
    -> Name VARCHAR(100),
    -> Marks INT
    -> );
Query OK, 0 rows affected (0.70 sec)

mysql> INSERT INTO CountSameValue VALUES(1,'Sam',67);
mysql> INSERT INTO CountSameValue VALUES(2,'Mike',87);
mysql> INSERT INTO CountSameValue VALUES(3,'Carol',67);
mysql> INSERT INTO CountSameValue VALUES(4,'Bob',87);
mysql> INSERT INTO CountSameValue VALUES(5,'John',71);
mysql> INSERT INTO CountSameValue VALUES(6,'Adam',66);
mysql> INSERT INTO CountSameValue VALUES(7,'David',71);
mysql> INSERT INTO CountSameValue VALUES(8,'Maria',67);

ข้อมูลทั้งหมด

mysql> SELECT * FROM CountSameValue;
+------+-------+-------+
| Id   | Name  | Marks |
+------+-------+-------+
| 1    | Sam   | 67    |
| 2    | Mike  | 87    |
| 3    | Carol | 67    |
| 4    | Bob   | 87    |
| 5    | John  | 71    |
| 6    | Adam  | 66    |
| 7    | David | 71    |
| 8    | Maria | 67    |
+------+-------+-------+
8 rows in set (0.00 sec)

คำสั่งนับจำนวน Marks ที่ซ้ำกัน

mysql> SELECT Marks, COUNT(*) AS Total FROM CountSameValue GROUP BY Marks;
+-------+-------+
| Marks | Total |
+-------+-------+
| 67    | 3     |
| 87    | 2     |
| 71    | 2     |
| 66    | 1     |
+-------+-------+
4 rows in set (0.00 sec)

การประยุกต์ใช้:

  • หาค่าที่ซ้ำมากที่สุด: ORDER BY Total DESC LIMIT 1
  • กรองเฉพาะที่ซ้ำ: HAVING COUNT(*) > 1
  • นับ distinct values: COUNT(DISTINCT column)