Vấn đề:
Bạn muốn tính giá trị trung bình của các số được lưu trữ trong một cột.
Ví dụ:
Cơ sở dữ liệu của chúng tôi có một bảng có tên sale
với dữ liệu trong các cột sau:id
, city
, year
và amount
.
id | thành phố | năm | số lượng |
---|---|---|---|
1 | Los Angeles | 2017 | 2345,50 |
2 | Chicago | 2018 | 1345,46 |
3 | Annandale | 2016 | 900,56 |
4 | Annandale | 2017 | 23230.22 |
5 | Los Angeles | 2018 | 12456.20 |
6 | Chicago | 2017 | 89000.40 |
7 | Annandale | 2018 | 21005.77 |
8 | Chicago | 2016 | 2300,89 |
Hãy tính toán doanh số bán hàng trung bình, bất kể thành phố hay năm.
Giải pháp:
SELECT AVG(amount) as avg_amount FROM sale;
Đây là kết quả:
avg_amount |
---|
19073.125000 |
Thảo luận:
Nếu bạn muốn tính toán trung bình của các giá trị số được lưu trữ trong một cột, bạn có thể làm như vậy bằng cách sử dụng AVG()
chức năng tổng hợp; nó coi như đối số của nó là tên của cột có giá trị trung bình mà bạn muốn tính toán. Nếu bạn chưa chỉ định bất kỳ cột nào khác trong SELECT
, giá trị trung bình sẽ được tính cho tất cả các bản ghi trong bảng.
Tất nhiên, vì nó là một hàm tổng hợp, AVG()
cũng có thể được sử dụng với các nhóm. Ví dụ:nếu chúng tôi muốn tìm mức bán trung bình trên mỗi thành phố, chúng tôi có thể viết truy vấn sau:
SELECT city, AVG(amount) as avg_amount FROM sale GROUP BY city;
Mức trung bình được tính cho mỗi thành phố:
city | số lượng |
---|---|
Los Angeles | 7400.850000 |
Chicago | 30882.250000 |
Annandale | 15045.516667 |
Ngoài ra, nếu giá trị trung bình phải được làm tròn, bạn có thể chuyển kết quả của AVG()
hàm thành ROUND()
:
SELECT city, ROUND(AVG(amount), 2) as avg_amount FROM sale GROUP BY city;