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

MySQL: นับจำนวนแถวแยกตามค่าในคอลัมน์ (GROUP BY COUNT)

การนับจำนวนแถวต่อกลุ่มด้วย GROUP BY

ใช้ COUNT() ร่วมกับ GROUP BY เพื่อนับจำนวนแถวของแต่ละค่าที่แตกต่างกัน

ตัวอย่าง

mysql> create table DemoTable841(
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Value varchar(100) );
Query OK, 0 rows affected (0.67 sec)
mysql> insert into DemoTable841(Value) values('X');
mysql> insert into DemoTable841(Value) values('Y');
mysql> insert into DemoTable841(Value) values('Y');
mysql> insert into DemoTable841(Value) values('Z');
mysql> insert into DemoTable841(Value) values('X');
mysql> insert into DemoTable841(Value) values('Z');

คำสั่งนับจำนวน

mysql> select Value, Concat(COUNT(Value), ' Times') from DemoTable841 group by Value;

ผลลัพธ์:

+-------+-------------------------------+
| Value | Concat(COUNT(Value), ' Times') |
+-------+-------------------------------+
| X     | 2 Times                       |
| Y     | 2 Times                       |
| Z     | 2 Times                       |
+-------+-------------------------------+

รูปแบบอื่นๆ

-- นับแถวทั้งหมดในแต่ละกลุ่ม (รวม NULL)
SELECT Value, COUNT(*) as cnt FROM DemoTable841 GROUP BY Value;

-- เรียงตามจำนวนมากไปน้อย
SELECT Value, COUNT(*) as cnt FROM DemoTable841 GROUP BY Value ORDER BY cnt DESC;

-- กรองกลุ่มที่มีจำนวนมากกว่า 1 (HAVING)
SELECT Value, COUNT(*) as cnt FROM DemoTable841 GROUP BY Value HAVING COUNT(*) > 1;

สรุป

SELECT column, COUNT(*) FROM table GROUP BY column เป็นรูปแบบมาตรฐานสำหรับสรุปจำนวนข้อมูลต่อกลุ่ม