การหาค่าสูงสุด (MAX) ต่อกลุ่มค่าที่ซ้ำกัน
เมื่อมีคอลัมน์ที่มีค่าซ้ำ (เช่น ชื่อสินค้า) และต้องการหาค่าสูงสุดของคอลัมน์อื่น (เช่น ราคา) สำหรับแต่ละกลุ่ม เราใช้ MAX() ร่วมกับ GROUP BY
สร้างตารางและเพิ่มข้อมูล
mysql> CREATE TABLE DemoTable (
ProductName VARCHAR(100),
ProductPrice INT
);
Query OK, 0 rows affected (0.68 sec)
mysql> INSERT INTO DemoTable VALUES('Product-1',56);
mysql> INSERT INTO DemoTable VALUES('Product-2',78);
mysql> INSERT INTO DemoTable VALUES('Product-1',88);
mysql> INSERT INTO DemoTable VALUES('Product-2',86);
mysql> INSERT INTO DemoTable VALUES('Product-1',45);
mysql> INSERT INTO DemoTable VALUES('Product-3',90);
mysql> INSERT INTO DemoTable VALUES('Product-2',102);
mysql> INSERT INTO DemoTable VALUES('Product-3',59);
แสดงข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+-------------+--------------+
| ProductName | ProductPrice |
+-------------+--------------+
| Product-1 | 56 |
| Product-2 | 78 |
| Product-1 | 88 |
| Product-2 | 86 |
| Product-1 | 45 |
| Product-3 | 90 |
| Product-2 | 102 |
| Product-3 | 59 |
+-------------+--------------+
8 rows in set (0.00 sec)
คำสั่งหาราคาสูงสุดต่อสินค้า
mysql> SELECT ProductName, MAX(ProductPrice) FROM DemoTable GROUP BY ProductName;
ผลลัพธ์:
+-------------+-------------------+
| ProductName | MAX(ProductPrice) |
+-------------+-------------------+
| Product-1 | 88 |
| Product-2 | 102 |
| Product-3 | 90 |
+-------------+-------------------+
3 rows in set (0.00 sec)
คำอธิบาย
GROUP BY ProductName: จัดกลุ่มแถวตามชื่อสินค้าMAX(ProductPrice): หาราคาสูงสุดในแต่ละกลุ่ม- Product-1: ราคา 56, 88, 45 → MAX = 88
- Product-2: ราคา 78, 86, 102 → MAX = 102
- Product-3: ราคา 90, 59 → MAX = 90