ใช้ 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ทำให้ชื่อคอลัมน์อ่านง่าย