Để tính trung bình (AVG) của cột số ứng với từng giá trị văn bản (VARCHAR) trùng lặp, dùng AVG() kết hợp GROUP BY theo cột VARCHAR.
Ví dụ minh họa
Tạo bảng:
mysql> create table DemoTable(
Value int,
Value2 varchar(100)
);
Chèn dữ liệu (Value2 trùng lặp '999.999.999.999'):
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');
Hiển thị dữ liệu:
mysql> select * from DemoTable;
Kết quả:
+-------+-----------------+ | Value | Value2 | +-------+-----------------+ | 10 | 999.999.999.999 | | 20 | 888.888.888.888 | | 30 | 999.999.999.999 | +-------+-----------------+
Truy vấn AVG(Value) GROUP BY Value2
mysql> select Value2, avg(Value) from DemoTable group by Value2;
Kết quả:
+-----------------+------------+ | Value2 | avg(Value) | +-----------------+------------+ | 999.999.999.999 | 20.0000 | | 888.888.888.888 | 20.0000 | +-----------------+------------+
Giải thích:
GROUP BY Value2: Tạo 2 nhóm theo giá trị chuỗi Value2- Nhóm '999.999.999.999': có Value = 10 và 30 → AVG = (10+30)/2 = 20
- Nhóm '888.888.888.888': có Value = 20 → AVG = 20
Cách này áp dụng cho: điểm trung bình theo mã môn học, doanh thu trung bình theo mã sản phẩm, lương trung bình theo phòng ban (mã phòng ban là VARCHAR), v.v.