Trong MariaDB, AVG()
hàm trả về giá trị trung bình của biểu thức đã cho.
DISTINCT
có thể được sử dụng để trả về giá trị trung bình của các giá trị riêng biệt (tức là loại bỏ các giá trị trùng lặp trước khi tính giá trị trung bình).
NULL
các giá trị bị bỏ qua.
Dữ liệu mẫu
Giả sử chúng ta có một bảng với dữ liệu sau:
SELECT
VendorId,
ProductName,
ProductPrice
FROM Products;
Kết quả:
+----------+---------------------------------+--------------+ | VendorId | ProductName | ProductPrice | +----------+---------------------------------+--------------+ | 1001 | Left handed screwdriver | 25.99 | | 1001 | Right handed screwdriver | 25.99 | | 1001 | Long Weight (blue) | 14.75 | | 1001 | Long Weight (green) | 11.99 | | 1002 | Sledge Hammer | 33.49 | | 1003 | Chainsaw | 245.00 | | 1003 | Straw Dog Box | 55.99 | | 1004 | Bottomless Coffee Mugs (4 Pack) | 9.99 | +----------+---------------------------------+--------------+
Ví dụ
Chúng ta có thể sử dụng truy vấn sau để lấy giá trung bình của tất cả các mức giá.
SELECT AVG(ProductPrice)
FROM Products;
Kết quả:
52.898750
Trong trường hợp này, thông tin giá được lưu trữ trong ProductPrice
và vì vậy chúng tôi đã chuyển nó làm đối số cho AVG()
hàm, sau đó tính giá trị trung bình và trả về kết quả.
Kết quả được lọc
AVG()
hàm hoạt động trên các hàng được trả về bởi truy vấn. Vì vậy, nếu bạn lọc kết quả, kết quả là AVG()
sẽ phản ánh điều đó.
SELECT AVG(ProductPrice)
FROM Products
WHERE VendorId = 1001;
Kết quả:
19.680000
Trong trường hợp này, 19.680000 là giá trung bình của tất cả các sản phẩm được cung cấp bởi nhà cung cấp được chỉ định.
DISTINCT
Từ khóa
Bạn có thể sử dụng DISTINCT
từ khóa với AVG()
để chỉ tính các giá trị riêng biệt. Nghĩa là, nếu có bất kỳ giá trị trùng lặp nào, chúng được coi là một giá trị.
Ví dụ:
SELECT
AVG(ProductPrice) AS "All",
AVG(DISTINCT ProductPrice) AS "Distinct"
FROM Products;
Kết quả:
+-----------+-----------+ | All | Distinct | +-----------+-----------+ | 52.898750 | 56.742857 | +-----------+-----------+
Trong trường hợp này, hai mặt hàng có cùng mức giá (tuốc nơ vít thuận tay trái và tuốc nơ vít tay phải đều có giá 25,99). Do đó, AVG()
, khi được sử dụng với DISTINCT
từ khóa, coi cả hai giá trị đó là một và tính toán kết quả của nó cho phù hợp.
Chức năng cửa sổ
AVG()
chức năng có thể được sử dụng trong các chức năng cửa sổ. Xem SQL AVG()
cho người mới bắt đầu để biết một ví dụ về điều này.