คำนวณค่าเฉลี่ยราคาต่อ Product ID ที่ซ้ำกัน
ใช้ AVG() ร่วมกับ GROUP BY เพื่อรวมแถวที่มี ProductId เดียวกัน และคำนวณค่าเฉลี่ยของ ProductPrice
สร้างตารางและข้อมูล
mysql> CREATE TABLE DemoTable1490 (
-> ProductId VARCHAR(20),
-> ProductPrice INT
-> );
Query OK, 0 rows affected (0.43 sec)
mysql> INSERT INTO DemoTable1490 VALUES
-> ('PRODUCT_100', 700),
-> ('PRODUCT_200', 500),
-> ('PRODUCT_200', 1000),
-> ('PRODUCT_100', 1300),
-> ('PRODUCT_200', 300);
Query OK, 5 rows affected
ข้อมูลก่อนจัดกลุ่ม
+-------------+--------------+ | ProductId | ProductPrice | +-------------+--------------+ | PRODUCT_100 | 700 | | PRODUCT_200 | 500 | | PRODUCT_200 | 1000 | | PRODUCT_100 | 1300 | | PRODUCT_200 | 300 | +-------------+--------------+
คำสั่ง: หาค่าเฉลี่ยราคาต่อ ProductId
mysql> SELECT ProductId, AVG(ProductPrice)
-> FROM DemoTable1490
-> GROUP BY ProductId;
ผลลัพธ์
+-------------+-------------------+ | ProductId | avg(ProductPrice) | +-------------+-------------------+ | PRODUCT_100 | 1000.0000 | | PRODUCT_200 | 600.0000 | +-------------+-------------------+
การคำนวณยืนยัน
- PRODUCT_100: (700 + 1300) / 2 = 1000
- PRODUCT_200: (500 + 1000 + 300) / 3 = 600
ขยายความสามารถ: เพิ่มฟังก์ชันสรุปอื่นๆ
SELECT
ProductId,
COUNT(*) AS total_records,
AVG(ProductPrice) AS avg_price,
MIN(ProductPrice) AS min_price,
MAX(ProductPrice) AS max_price,
SUM(ProductPrice) AS total_price
FROM DemoTable1490
GROUP BY ProductId;
ผลลัพธ์ขยาย
+-------------+---------------+-----------+-----------+-----------+-------------+ | ProductId | total_records | avg_price | min_price | max_price | total_price | +-------------+---------------+-----------+-----------+-----------+-------------+ | PRODUCT_100 | 2 | 1000.0000 | 700 | 1300 | 2000 | | PRODUCT_200 | 3 | 600.0000 | 300 | 1000 | 1800 | +-------------+---------------+-----------+-----------+-----------+-------------+
⚠️ หมายเหตุเรื่องชนิดข้อมูล
AVG() บนคอลัมน์ INT จะคืนค่าเป็น DECIMAL (มีทศนิยม) หากต้องการเป็น INT ให้ใช้ CAST(AVG(ProductPrice) AS UNSIGNED) หรือ ROUND(AVG(ProductPrice))