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

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

ใช้ COUNT(*) ร่วม GROUP BY คอลัมน์ เพื่อนับความถี่ของแต่ละค่า แล้วแสดงเป็นคอลัมน์เพิ่มเติม

ตัวอย่างการใช้งาน

สร้างตารางค่า:

mysql> create table DemoTable1942 (Value int);

เพิ่มข้อมูล (มีค่าซ้ำ):

mysql> insert into DemoTable1942 values(1),(2),(3),(2),(3),(3),(1);

ดูข้อมูลดิบ:

mysql> select * from DemoTable1942;
+-------+
| Value |
+-------+
|     1 |
|     2 |
|     3 |
|     2 |
|     3 |
|     3 |
|     1 |
+-------+
7 rows in set (0.00 sec)

คิวรีนับและจัดกลุ่ม

mysql> select Value, count(*) as Frequency from DemoTable1942 group by Value;

ผลลัพธ์:

+-------+-----------+
| Value | Frequency |
+-------+-----------+
|     1 |         2 |
|     2 |         2 |
|     3 |         3 |
+-------+-----------+
3 rows in set (0.00 sec)

ขยายความสามารถ

1. เรียงตามความถี่ (มาก → น้อย)

SELECT Value, COUNT(*) as Frequency 
FROM DemoTable1942 
GROUP BY Value 
ORDER BY Frequency DESC;

2. กรองเฉพาะที่ซ้ำ (Frequency > 1)

SELECT Value, COUNT(*) as Frequency 
FROM DemoTable1942 
GROUP BY Value 
HAVING COUNT(*) > 1;

3. แสดงเป็นเปอร์เซ็นต์

SELECT 
  Value, 
  COUNT(*) as Frequency,
  ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM DemoTable1942), 2) as Percentage
FROM DemoTable1942 
GROUP BY Value;

คำอธิบาย

  • GROUP BY Value: รวมแถวที่ Value เหมือนกันเป็นกลุ่มเดียว
  • COUNT(*): นับจำนวนแถวในแต่ละกลุ่ม
  • Alias as Frequency ทำให้ชื่อคอลัมน์อ่านง่าย