Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Tính giá trung bình của sản phẩm trùng lặp ProductId trong MySQL

Khi một sản phẩm (ProductId) xuất hiện nhiều lần với giá khác nhau, dùng AVG() kết hợp GROUP BY để tính giá trung bình cho mỗi mã sản phẩm.

Cú pháp

SELECT ProductId, AVG(ProductPrice) AS AveragePrice
FROM ten_bang
GROUP BY ProductId;

Ví dụ minh họa

Tạo bảng giá sản phẩm:

mysql> CREATE TABLE DemoTable1490 (
    -> ProductId VARCHAR(20),
    -> ProductPrice INT
    -> );

Chèn dữ liệu (PRODUCT_100 và PRODUCT_200 xuất hiện nhiều lần):

mysql> INSERT INTO DemoTable1490 VALUES
    -> ('PRODUCT_100', 700),
    -> ('PRODUCT_200', 500),
    -> ('PRODUCT_200', 1000),
    -> ('PRODUCT_100', 1300),
    -> ('PRODUCT_200', 300);

Truy vấn giá trung bình theo ProductId:

mysql> SELECT ProductId, AVG(ProductPrice)
    -> FROM DemoTable1490
    -> GROUP BY ProductId;

Kết quả:

+-------------+-------------------+
| ProductId   | AVG(ProductPrice) |
+-------------+-------------------+
| PRODUCT_100 |         1000.0000 |
| PRODUCT_200 |          600.0000 |
+-------------+-------------------+

Giải thích: PRODUCT_100: (700+1300)/2 = 1000. PRODUCT_200: (500+1000+300)/3 = 600.

Mở rộng

  • Làm tròn: ROUND(AVG(ProductPrice), 2).
  • Thêm điều kiện: HAVING AVG(ProductPrice) > 500.
  • Đếm số lần xuất hiện: COUNT(*) AS frequency.
  • Index trên ProductId sẽ tăng tốc GROUP BY trên bảng lớn.