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

นับจำนวนทุกค่าในคอลัมน์ MySQL (Frequency Count)

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

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

1. สร้างตารางสินค้า

mysql> CREATE TABLE DemoTable (ProductName VARCHAR(100));
mysql> INSERT INTO DemoTable VALUES 
('Product-1'), ('Product-2'), ('Product-3'), ('Product-3'), 
('Product-2'), ('Product-4'), ('Product-5'), ('Product-1');

2. นับจำนวนแต่ละสินค้า

mysql> SELECT ProductName, COUNT(ProductName) AS TotalCount 
    -> FROM DemoTable GROUP BY ProductName;

ผลลัพธ์

+-------------+------------+
| ProductName | TotalCount |
+-------------+------------+
| Product-1   | 2          |
| Product-2   | 2          |
| Product-3   | 2          |
| Product-4   | 1          |
| Product-5   | 1          |
+-------------+------------+

รูปแบบ Query เพิ่มเติม

เรียงตามจำนวนมากไปน้อย

SELECT ProductName, COUNT(*) AS cnt 
FROM DemoTable GROUP BY ProductName ORDER BY cnt DESC;

เฉพาะที่ซ้ำ (Count > 1)

SELECT ProductName, COUNT(*) AS cnt 
FROM DemoTable GROUP BY ProductName HAVING cnt > 1;

รวม NULL ด้วย

SELECT COALESCE(ProductName, '(NULL)'), COUNT(*) 
FROM DemoTable GROUP BY ProductName;

ประสิทธิภาพ

  • สร้าง Index บนคอลัมน์ที่ GROUP BY: CREATE INDEX idx_prod ON DemoTable(ProductName)
  • MySQL 8.0+ ใช้ Window Function ได้: COUNT(*) OVER (PARTITION BY ProductName)