การคำนวณ Average of Averages ใน MySQL
ใช้ AVG() บนผลรวมของคอลัมน์ แล้วหารจำนวนคอลัมน์ (หรือใช้ AVG ต่อคอลัมน์ แล้ว AVG อีกครั้ง)
ตัวอย่างการใช้งาน
สร้างตาราง 3 คอลัมน์ตัวเลข:
mysql> create table DemoTable (Value1 int, Value2 int, Value3 int); mysql> insert into DemoTable values(10,20,30); mysql> insert into DemoTable values(13,15,18); mysql> insert into DemoTable values(21,31,41);
ข้อมูล:
+--------+--------+--------+ | Value1 | Value2 | Value3 | +--------+--------+--------+ | 10 | 20 | 30 | | 13 | 15 | 18 | | 21 | 31 | 41 | +--------+--------+--------+
คิวรีหา Average of Averages (ค่าเฉลี่ยของค่าเฉลี่ยแต่ละแถว):
mysql> select avg(Value1 + Value2 + Value3) / 3.0 from DemoTable;
+-------------------------------+ | avg(Value1 + Value2 + Value3) / 3.0 | +-------------------------------+ | 22.11111111 | +-------------------------------+
การคำนวณ:
- แถว 1: (10+20+30)/3 = 20
- แถว 2: (13+15+18)/3 = 15.333...
- แถว 3: (21+31+41)/3 = 31
- Average of averages: (20 + 15.333 + 31) / 3 = 22.111...
วิธีอื่น (ชัดเจนกว่า):
SELECT AVG(row_avg) FROM (
SELECT (Value1 + Value2 + Value3) / 3.0 AS row_avg FROM DemoTable
) t;
ข้อควรระวัง: "Average of Averages" ≠ "Overall Average" (เว้นแต่ Group Size เท่ากัน) | Overall Average = AVG(Value1), AVG(Value2), AVG(Value3) แล้วเฉลี่ย 3 ค่า | หรือ SUM(Value1+Value2+Value3) / COUNT(*) / 3