メインコンテンツへ移動

เนื้อหาภาษาไทย / タイ語のコンテンツ

システムガイド 内容確認済み

ฟังก์ชัน AVG() คืออะไร?

บทความนี้อธิบายถึงฟังก์ชัน `AVG()` ใน MySQL ซึ่งใช้ในการคำนวณหาค่าเฉลี่ยของข้อมูลตัวเลขในคอลัมน์ที่ระบุ โดยจะละเว้นค่า `NULL` และสามารถใช้ร่วมกับ `WHERE` clause...

ฟังก์ชัน AVG() คืออะไร?

ในบทที่แล้ว เราได้เรียนรู้เกี่ยวกับฟังก์ชัน SUM() ที่ใช้ในการหาผลรวมของข้อมูล วันนี้เราจะมาทำความรู้จักกับฟังก์ชันที่คล้ายกัน แต่มีประโยชน์ในอีกรูปแบบหนึ่ง นั่นคือ ฟังก์ชัน AVG() ซึ่งย่อมาจาก "Average" หรือค่าเฉลี่ย นั่นเอง

ฟังก์ชัน AVG() ใน MySQL ใช้สำหรับคำนวณหาค่าเฉลี่ยของค่าทั้งหมดในคอลัมน์ที่ระบุ โดยคอลัมน์นั้นจะต้องเป็นชนิดข้อมูลที่เป็นตัวเลข (Numeric Data Type) เช่น INT, DECIMAL, FLOAT หรือ DOUBLE หากคอลัมน์นั้นไม่ใช่ตัวเลข MySQL จะพยายามแปลงค่าให้เป็นตัวเลขก่อน แต่ถ้าไม่สามารถแปลงได้ จะเกิดข้อผิดพลาดขึ้น

รูปแบบการใช้งาน AVG()

รูปแบบการใช้งานพื้นฐานของฟังก์ชัน AVG() คือ:

SELECT AVG(column_name)
FROM table_name;

โดยที่:

  • column_name คือชื่อคอลัมน์ที่คุณต้องการหาค่าเฉลี่ย
  • table_name คือชื่อตารางที่คอลัมน์นั้นอยู่

ตัวอย่างการใช้งาน AVG()

สมมติว่าเรามีตารางชื่อ products ที่เก็บข้อมูลสินค้า และมีคอลัมน์ price ที่เก็บราคาสินค้า เราสามารถหาค่าเฉลี่ยของราคาสินค้าทั้งหมดได้ดังนี้:

SELECT AVG(price)
FROM products;

ผลลัพธ์ที่ได้จะเป็นค่าเฉลี่ยของราคาสินค้าทั้งหมดในตาราง products

ข้อควรระวัง: ค่า NULL

สิ่งสำคัญที่ต้องระวังในการใช้งานฟังก์ชัน AVG() คือค่า NULL โดยปกติแล้ว ฟังก์ชัน AVG() จะไม่นำค่า NULL มาคำนวณในการหาค่าเฉลี่ย นั่นหมายความว่า ถ้าในคอลัมน์ที่คุณกำลังหาค่าเฉลี่ยมีค่า NULL อยู่ ค่าเหล่านั้นจะถูกละเว้นไป

ตัวอย่างเช่น ถ้าตาราง products ของเรามีข้อมูลดังนี้:

+----+------------+-------+
| id | name       | price |
+----+------------+-------+
| 1  | Product A  | 10.00 |
| 2  | Product B  | 20.00 |
| 3  | Product C  | NULL  |
| 4  | Product D  | 30.00 |
+----+------------+-------+

เมื่อเราใช้คำสั่ง SELECT AVG(price) FROM products; ผลลัพธ์ที่ได้จะเป็น 20.00 ( (10 + 20 + 30) / 3 ) ค่า NULL ในแถวของ Product C จะถูกละเว้น

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

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

ตัวอย่างเช่น ถ้าเราต้องการหาค่าเฉลี่ยของราคาสินค้าที่มีราคาสูงกว่า 15 บาท เราสามารถทำได้ดังนี้:

SELECT AVG(price)
FROM products
WHERE price > 15;

ในกรณีนี้ ฟังก์ชัน AVG() จะคำนวณค่าเฉลี่ยเฉพาะราคาสินค้าที่มากกว่า 15 บาทเท่านั้น

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

AVG() มักถูกใช้ร่วมกับ GROUP BY clause เพื่อหาค่าเฉลี่ยของข้อมูลในแต่ละกลุ่ม ซึ่งมีประโยชน์อย่างมากในการวิเคราะห์ข้อมูลเชิงลึก

สมมติว่าตาราง products ของเรามีคอลัมน์ category ที่ระบุประเภทของสินค้า เราสามารถหาค่าเฉลี่ยของราคาสินค้าในแต่ละประเภทได้ดังนี้:

SELECT category, AVG(price)
FROM products
GROUP BY category;

ผลลัพธ์ที่ได้จะเป็นค่าเฉลี่ยของราคาสินค้าสำหรับแต่ละประเภท ตัวอย่างเช่น:

+----------+------------+
| category | AVG(price) |
+----------+------------+
| Electronics | 25.00      |
| Clothing    | 12.50      |
+----------+------------+

ซึ่งหมายความว่า สินค้าประเภท Electronics มีราคาเฉลี่ย 25 บาท และสินค้าประเภท Clothing มีราคาเฉลี่ย 12.50 บาท

ตัวอย่างการใช้งานจริง: การวิเคราะห์ยอดขาย

ลองพิจารณาสถานการณ์จริงที่บริษัทขายสินค้าออนไลน์แห่งหนึ่งต้องการวิเคราะห์ยอดขายของตนเอง พวกเขาเก็บข้อมูลยอดขายในตารางชื่อ sales ซึ่งมีคอลัมน์ order_date (วันที่สั่งซื้อ), product_id (รหัสสินค้า) และ amount (จำนวนเงินที่ขายได้)

ถ้าบริษัทต้องการทราบยอดขายเฉลี่ยต่อวัน พวกเขาสามารถใช้คำสั่ง SQL ต่อไปนี้:

SELECT order_date, AVG(amount) AS average_daily_sales
FROM sales
GROUP BY order_date
ORDER BY order_date;

คำสั่งนี้จะแสดงยอดขายเฉลี่ยสำหรับแต่ละวัน โดยเรียงลำดับตามวันที่

นอกจากนี้ หากบริษัทต้องการทราบยอดขายเฉลี่ยต่อเดือน พวกเขาสามารถใช้ฟังก์ชัน MONTH() และ YEAR() เพื่อจัดกลุ่มข้อมูลตามเดือนและปีได้:

SELECT YEAR(order_date) AS year, MONTH(order_date) AS month, AVG(amount) AS average_monthly_sales
FROM sales
GROUP BY YEAR(order_date), MONTH(order_date)
ORDER BY YEAR(order_date), MONTH(order_date);

คำสั่งนี้จะแสดงยอดขายเฉลี่ยสำหรับแต่ละเดือน โดยเรียงลำดับตามปีและเดือน

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

ข้อผิดพลาดที่พบบ่อยในการใช้งาน AVG() คือการใช้กับคอลัมน์ที่ไม่ใช่ตัวเลข หรือการลืมจัดการค่า NULL อย่างเหมาะสม

1. การใช้กับคอลัมน์ที่ไม่ใช่ตัวเลข:

ถ้าคุณพยายามใช้ AVG() กับคอลัมน์ที่เป็นข้อความ (เช่น VARCHAR หรือ TEXT) MySQL จะพยายามแปลงค่าในคอลัมน์นั้นให้เป็นตัวเลขก่อน ถ้าไม่สามารถแปลงได้ จะเกิดข้อผิดพลาดขึ้น

-- ตัวอย่าง: คอลัมน์ product_name เป็น VARCHAR
SELECT AVG(product_name) FROM products; -- อาจเกิดข้อผิดพลาด

2. การจัดการค่า NULL:

อย่างที่กล่าวไปแล้ว AVG() จะไม่นำค่า NULL มาคำนวณ ถ้าคุณต้องการให้ค่า NULL ถูกพิจารณาเป็น 0 คุณสามารถใช้ฟังก์ชัน IFNULL() เพื่อแทนที่ค่า NULL ด้วย 0 ก่อนที่จะคำนวณค่าเฉลี่ยได้

SELECT AVG(IFNULL(price, 0)) FROM products;

ในตัวอย่างนี้ ถ้าคอลัมน์ price มีค่า NULL ค่าเหล่านั้นจะถูกแทนที่ด้วย 0 ก่อนที่จะคำนวณค่าเฉลี่ย

สรุป

ฟังก์ชัน AVG() เป็นเครื่องมือที่มีประโยชน์ในการหาค่าเฉลี่ยของข้อมูลตัวเลขใน MySQL ช่วยให้เราสามารถวิเคราะห์ข้อมูลและสรุปผลได้อย่างรวดเร็วและแม่นยำ การเข้าใจวิธีการใช้งาน AVG() ร่วมกับ WHERE clause และ GROUP BY clause จะช่วยให้คุณสามารถดึงข้อมูลเชิงลึกจากฐานข้อมูลของคุณได้อย่างมีประสิทธิภาพ

ในบทต่อไป เราจะมาเรียนรู้เกี่ยวกับฟังก์ชัน MIN() และ MAX() ซึ่งใช้ในการหาค่าที่น้อยที่สุดและมากที่สุดในคอลัมน์ที่กำหนด รอติดตามกันนะครับ!

Office.in.th Custom Service

この構成をもとにシステムを開発・カスタマイズしたいですか?

Office.in.th は、エンタープライズ Web アプリケーション、API 連携、官民の業務管理システムの設計・開発を承り、長期的なサポートも提供します。

ソフトウェア開発サービスを見る