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

นับ Top 10 ค่าที่พบมากที่สุดในคอลัมน์ MySQL (COUNT + GROUP BY + LIMIT)

ใช้ GROUP BY นับจำนวน COUNT(*) เรียง DESC จำกัด LIMIT 10

ไวยากรณ์

SELECT yourColumnName, COUNT(*)
FROM yourTableName
GROUP BY yourColumnName
ORDER BY COUNT(*) DESC
LIMIT 10;

สร้างตารางตัวอย่าง

mysql> CREATE TABLE countTop10Demo (Value INT);

เพิ่มข้อมูลตัวอย่าง (20 แถว มีค่าซ้ำ)

mysql> INSERT INTO countTop10Demo VALUES
(10), (1100), (200), (2100), (1100), (450), (600), (2100), (150), (16454),
(450), (2350), (1780), (1345), (34), (2100), (19034), (1844), (34), (16454);

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

mysql> SELECT * FROM countTop10Demo;

ผลลัพธ์ (20 แถว):

+-------+
| Value |
+-------+
| 10    |
| 1100  |
| 200   |
| 2100  |
| 1100  |
| 450   |
| 600   |
| 2100  |
| 150   |
| 16454 |
| 450   |
| 2350  |
| 1780  |
| 1345  |
| 34    |
| 2100  |
| 19034 |
| 1844  |
| 34    |
| 16454 |
+-------+

Query Top 10 ค่าที่พบมากที่สุด

mysql> SELECT Value, COUNT(*)
    -> FROM countTop10Demo
    -> GROUP BY Value
    -> ORDER BY COUNT(*) DESC
    -> LIMIT 10;

ผลลัพธ์:

+-------+----------+
| Value | COUNT(*) |
+-------+----------+
| 2100  | 3        |
| 1100  | 2        |
| 34    | 2        |
| 450   | 2        |
| 16454 | 2        |
| 1780  | 1        |
| 200   | 1        |
| 1345  | 1        |
| 19034 | 1        |
| 600   | 1        |
+-------+----------+

ขยาย: แสดง Percentage ด้วย

SELECT
    Value,
    COUNT(*) AS frequency,
    ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM countTop10Demo), 2) AS percentage
FROM countTop10Demo
GROUP BY Value
ORDER BY frequency DESC
LIMIT 10;

กรณี Tie (จำนวนเท่ากัน) - ใช้ Tie-breaker

ORDER BY COUNT(*) DESC, Value ASC  -- น้อยกว่ามาก่อน
ORDER BY COUNT(*) DESC, Value DESC -- มากกว่ามาก่อน

MySQL 8.0+ ใช้ Window Function

WITH ranked AS (
    SELECT Value, COUNT(*) AS freq,
           ROW_NUMBER() OVER (ORDER BY COUNT(*) DESC, Value) AS rn
    FROM countTop10Demo
    GROUP BY Value
)
SELECT Value, freq FROM ranked WHERE rn <= 10;

กรณีใช้งานจริง

  • Top selling products
  • Most visited pages
  • Common error codes
  • Popular tags/keywords