Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

หาค่าสูงสุดที่สอดคล้องกับค่าซ้ำในคอลัมน์ MySQL ด้วย MAX() และ GROUP BY

การหาค่าสูงสุด (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