การคำนวณค่าเฉลี่ยต่อกลุ่มค่าข้อความที่ซ้ำกัน
เมื่อมีคอลัมน์ตัวเลข (Value) และคอลัมน์ข้อความ (Value2) ที่มีค่าซ้ำ เราสามารถหาค่าเฉลี่ยของ Value จัดกลุ่มตาม Value2 ได้โดยใช้ AVG() กับ GROUP BY Value2
สร้างตารางและเพิ่มข้อมูล
mysql> CREATE TABLE DemoTable (
Value INT,
Value2 VARCHAR(100)
);
Query OK, 0 rows affected (0.84 sec)
mysql> INSERT INTO DemoTable VALUES(10, '999.999.999.999');
mysql> INSERT INTO DemoTable VALUES(20, '888.888.888.888');
mysql> INSERT INTO DemoTable VALUES(30, '999.999.999.999');
แสดงข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+-------+-----------------+
| Value | Value2 |
+-------+-----------------+
| 10 | 999.999.999.999 |
| 20 | 888.888.888.888 |
| 30 | 999.999.999.999 |
+-------+-----------------+
3 rows in set (0.00 sec)
คำสั่งหาค่าเฉลี่ย Value ต่อ Value2
mysql> SELECT Value2, AVG(Value) FROM DemoTable GROUP BY Value2;
ผลลัพธ์:
+-----------------+------------+
| Value2 | avg(Value) |
+-----------------+------------+
| 999.999.999.999 | 20.0000 |
| 888.888.888.888 | 20.0000 |
+-----------------+------------+
2 rows in set (0.06 sec)
คำอธิบาย
GROUP BY Value2: จัดกลุ่มตามค่าข้อความใน Value2- กลุ่ม '999.999.999.999' มี Value 10 และ 30 → ค่าเฉลี่ย = 20
- กลุ่ม '888.888.888.888' มี Value 20 → ค่าเฉลี่ย = 20
- MySQL จัดกลุ่มค่าข้อความได้เหมือนค่าตัวเลข ไม่มีปัญหา