Sử dụng AVG() trên biểu thức tổng các cột chia cho số cột để tính "trung bình của trung bình" trên mỗi hàng, rồi trung bình lại toàn bảng.
Ví dụ
Tạo bảng 3 cột số:
mysql> create table DemoTable (
Value1 int,
Value2 int,
Value3 int
);
Query OK, 0 rows affected (0.54 sec)Dữ liệu 3 hàng:
+--------+--------+--------+ | Value1 | Value2 | Value3 | +--------+--------+--------+ | 10 | 20 | 30 | | 13 | 15 | 18 | | 21 | 31 | 41 | +--------+--------+--------+
- Hàng 1: (10+20+30)/3 = 20
- Hàng 2: (13+15+18)/3 ≈ 15.33
- Hàng 3: (21+31+41)/3 = 31
Trung bình của 3 giá trị trung bình hàng
mysql> select avg(Value1+Value2+Value3)/3.0 from DemoTable;
+-------------------------------+ | avg(Value1+Value2+Value3)/3.0 | +-------------------------------+ | 22.11111111 | +-------------------------------+
(20 + 15.33 + 31) / 3 ≈ 22.11
Cách viết rõ ràng hơn (MySQL 8.0+):
SELECT AVG(row_avg) FROM (
SELECT (Value1+Value2+Value3)/3.0 AS row_avg FROM DemoTable
) t;Lưu ý: Chia cho 3.0 (số thực) để tránh chia nguyên (integer division) trong MySQL cũ.