본문으로 건너뛰기

เนื้อหาภาษาไทย / 태국어 콘텐츠

시스템 가이드 검수 완료된 콘텐츠

ฟังก์ชัน MIN() และ MAX() คืออะไร?

บทความนี้แนะนำฟังก์ชัน `MIN()` และ `MAX()` ใน MySQL ซึ่งใช้สำหรับหาค่าที่น้อยที่สุดและมากที่สุดในคอลัมน์ที่กำหนด โดยสามารถใช้ร่วมกับ `WHERE` clause เพื่อกรองข้อ...

ฟังก์ชัน MIN() และ MAX() คืออะไร?

ในบทเรียนที่ผ่านมา เราได้เรียนรู้เกี่ยวกับฟังก์ชัน AVG() ที่ใช้ในการหาค่าเฉลี่ยของข้อมูล ในบทนี้ เราจะมาทำความรู้จักกับอีกสองฟังก์ชันที่มีประโยชน์อย่างมากในการวิเคราะห์ข้อมูล นั่นคือ MIN() และ MAX() ฟังก์ชันเหล่านี้ใช้เพื่อหาค่าที่น้อยที่สุด (minimum) และค่าที่มากที่สุด (maximum) ในคอลัมน์ที่กำหนด

MIN(column_name)

ฟังก์ชัน MIN(column_name) ใช้เพื่อหาค่าที่น้อยที่สุดในคอลัมน์ที่ระบุ โดยจะละเว้นค่า NULL ในการคำนวณ

รูปแบบการใช้งาน:

SELECT MIN(column_name) FROM table_name;

ตัวอย่าง:

สมมติว่าเรามีตาราง products ที่เก็บข้อมูลเกี่ยวกับสินค้า:

CREATE TABLE products (
    product_id INT PRIMARY KEY,
    product_name VARCHAR(255),
    price DECIMAL(10, 2),
    stock INT
);

INSERT INTO products (product_id, product_name, price, stock) VALUES
(1, 'เสื้อยืด', 250.00, 50),
(2, 'กางเกงยีนส์', 790.00, 30),
(3, 'รองเท้าผ้าใบ', 1200.00, 20),
(4, 'หมวก', 150.00, 100),
(5, 'ถุงเท้า', 50.00, 200);

หากเราต้องการทราบราคาสินค้าที่ถูกที่สุดในตาราง เราสามารถใช้คำสั่ง:

SELECT MIN(price) AS minimum_price FROM products;

ผลลัพธ์ที่ได้:

+---------------+
| minimum_price |
+---------------+
|         50.00 |
+---------------+
1 row in set (0.00 sec)

จากผลลัพธ์ เราทราบว่าราคาสินค้าที่ถูกที่สุดคือ 50.00 บาท

MAX(column_name)

ฟังก์ชัน MAX(column_name) ใช้เพื่อหาค่าที่มากที่สุดในคอลัมน์ที่ระบุ โดยจะละเว้นค่า NULL ในการคำนวณ

รูปแบบการใช้งาน:

SELECT MAX(column_name) FROM table_name;

ตัวอย่าง:

จากตาราง products เดิม หากเราต้องการทราบราคาสินค้าที่แพงที่สุดในตาราง เราสามารถใช้คำสั่ง:

SELECT MAX(price) AS maximum_price FROM products;

ผลลัพธ์ที่ได้:

+---------------+
| maximum_price |
+---------------+
|       1200.00 |
+---------------+
1 row in set (0.00 sec)

จากผลลัพธ์ เราทราบว่าราคาสินค้าที่แพงที่สุดคือ 1200.00 บาท

การใช้งานร่วมกับ WHERE Clause

เช่นเดียวกับฟังก์ชันอื่นๆ ที่เราได้เรียนรู้มา เราสามารถใช้ MIN() และ MAX() ร่วมกับ WHERE clause เพื่อกรองข้อมูลก่อนที่จะหาค่าต่ำสุดและสูงสุดได้

ตัวอย่าง:

หากเราต้องการหาราคาสินค้าที่ถูกที่สุดและแพงที่สุดเฉพาะสินค้าที่มี stock มากกว่า 50 ชิ้น เราสามารถใช้คำสั่ง:

SELECT 
    MIN(price) AS minimum_price,
    MAX(price) AS maximum_price
FROM products
WHERE stock > 50;

ผลลัพธ์ที่ได้:

+---------------+---------------+
| minimum_price | maximum_price |
+---------------+---------------+
|          50.00 |        150.00 |
+---------------+---------------+
1 row in set (0.00 sec)

จากผลลัพธ์ เราทราบว่าราคาสินค้าที่ถูกที่สุดที่มี stock มากกว่า 50 ชิ้น คือ 50.00 บาท และราคาสินค้าที่แพงที่สุดคือ 150.00 บาท

การใช้งานร่วมกับ GROUP BY Clause

เรายังสามารถใช้ MIN() และ MAX() ร่วมกับ GROUP BY clause เพื่อหาค่าต่ำสุดและสูงสุดในแต่ละกลุ่มได้

ตัวอย่าง:

สมมติว่าเรามีตาราง orders ที่เก็บข้อมูลเกี่ยวกับการสั่งซื้อสินค้า:

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    customer_id INT,
    product_id INT,
    order_date DATE,
    quantity INT
);

INSERT INTO orders (order_id, customer_id, product_id, order_date, quantity) VALUES
(1, 101, 1, '2023-10-26', 2),
(2, 101, 2, '2023-10-26', 1),
(3, 102, 3, '2023-10-26', 3),
(4, 102, 1, '2023-10-27', 1),
(5, 103, 2, '2023-10-27', 2);

หากเราต้องการทราบวันที่ที่มีการสั่งซื้อครั้งแรกและครั้งสุดท้ายของลูกค้าแต่ละคน เราสามารถใช้คำสั่ง:

SELECT
    customer_id,
    MIN(order_date) AS first_order_date,
    MAX(order_date) AS last_order_date
FROM orders
GROUP BY customer_id;

ผลลัพธ์ที่ได้:

+-------------+--------------------+-------------------+
| customer_id | first_order_date | last_order_date  |
+-------------+--------------------+-------------------+
|         101 | 2023-10-26         | 2023-10-26        |
|         102 | 2023-10-26         | 2023-10-27        |
|         103 | 2023-10-27         | 2023-10-27        |
+-------------+--------------------+-------------------+
3 rows in set (0.00 sec)

จากผลลัพธ์ เราทราบวันที่ที่มีการสั่งซื้อครั้งแรกและครั้งสุดท้ายของลูกค้าแต่ละคน

Data Types ที่รองรับ

ฟังก์ชัน MIN() และ MAX() สามารถใช้ได้กับ Data Types หลายประเภท ไม่ว่าจะเป็น:

  • Numeric types: INT, DECIMAL, FLOAT, DOUBLE
  • String types: VARCHAR, CHAR, TEXT
  • Date and Time types: DATE, DATETIME, TIMESTAMP

ตัวอย่างการใช้งานกับ String:

SELECT MIN(product_name) AS first_product, MAX(product_name) AS last_product FROM products;

โดย MySQL จะทำการเปรียบเทียบ String ตามลำดับตัวอักษร (lexicographical order)

ตัวอย่างการใช้งานกับ Date:

SELECT MIN(order_date) AS earliest_order, MAX(order_date) AS latest_order FROM orders;

ในกรณีของ Date, MIN() จะคืนค่าวันที่ที่เก่าแก่ที่สุด และ MAX() จะคืนค่าวันที่ที่ใหม่ที่สุด

ข้อผิดพลาดที่พบบ่อย

  • การใช้กับคอลัมน์ที่มี Data Type ไม่ถูกต้อง: หากใช้ MIN() หรือ MAX() กับคอลัมน์ที่มี Data Type ที่ไม่สามารถเปรียบเทียบค่าได้ (เช่น BLOB หรือ JSON) MySQL จะคืนค่า Error
  • การลืมใส่ alias: หากไม่ได้ใส่ alias ให้กับคอลัมน์ที่ได้จากการใช้ MIN() หรือ MAX() ชื่อคอลัมน์ในผลลัพธ์อาจจะไม่สื่อความหมาย
  • การเข้าใจผิดเกี่ยวกับค่า NULL: อย่าลืมว่า MIN() และ MAX() จะละเว้นค่า NULL หากคอลัมน์มีแต่ค่า NULL ฟังก์ชันจะคืนค่า NULL

ตัวอย่าง:

CREATE TABLE example (
    id INT PRIMARY KEY,
    value INT
);

INSERT INTO example (id, value) VALUES
(1, 10),
(2, NULL),
(3, 20);

SELECT MIN(value), MAX(value) FROM example;

ผลลัพธ์:

+------------+------------+
| MIN(value) | MAX(value) |
+------------+------------+
|         10 |         20 |
+------------+------------+
1 row in set (0.00 sec)

จะเห็นได้ว่าค่า NULL ถูกละเว้น

สรุป

ฟังก์ชัน MIN() และ MAX() เป็นเครื่องมือที่มีประโยชน์ในการวิเคราะห์ข้อมูลใน MySQL ช่วยให้เราสามารถหาค่าที่น้อยที่สุดและมากที่สุดในคอลัมน์ที่กำหนดได้อย่างง่ายดาย และสามารถใช้ร่วมกับ WHERE และ GROUP BY clauses เพื่อเพิ่มความยืดหยุ่นในการใช้งาน

ในบทเรียนถัดไป เราจะเรียนรู้เกี่ยวกับ GROUP BY clause ซึ่งเป็นเครื่องมือที่สำคัญในการจัดกลุ่มข้อมูลและทำการวิเคราะห์ในแต่ละกลุ่ม

Office.in.th Custom Service

이 구조를 바탕으로 시스템을 개발하거나 맞춤 변경하고 싶으신가요?

Office.in.th는 엔터프라이즈 웹 애플리케이션, API 연동, 공공/민간 업무 관리 시스템을 설계·개발하며 장기 지원을 제공합니다.

소프트웨어 개발 서비스 보기