Skip to main content

การรวมข้อมูล (Aggregations)

บทนำ

การรวมข้อมูล (Aggregation) ใน SQL คือกระบวนการในการสรุปข้อมูลจากหลายแถวมาเป็นค่าเดียว เช่น การหาผลรวม ค่าเฉลี่ย ค่ามากสุด หรือน้อยสุด การรวมข้อมูลจะช่วยให้เราสามารถดึงข้อมูลสรุปที่มีประโยชน์จากฐานข้อมูลได้ โดยใช้ฟังก์ชันทางคณิตศาสตร์ที่เรียกว่า Aggregate Functions ซึ่งทำงานร่วมกับคำสั่ง GROUP BY และ HAVING เพื่อกรองข้อมูลและจัดกลุ่มตามเงื่อนไขที่กำหนด

1. Aggregate Functions

ฟังก์ชันการรวมข้อมูลที่ใช้ใน SQL ได้แก่:

1.1 COUNT()

ฟังก์ชัน COUNT() ใช้ในการนับจำนวนแถวในตารางหรือจำนวนแถวที่ตรงกับเงื่อนไขที่กำหนด

ตัวอย่าง:

SELECT COUNT(*) FROM orders;

ในตัวอย่างนี้ COUNT(*) จะนับจำนวนแถวทั้งหมดในตาราง orders

1.2 SUM()

ฟังก์ชัน SUM() ใช้ในการหาผลรวมของค่าจากคอลัมน์ที่เป็นตัวเลข

ตัวอย่าง:

SELECT SUM(total_amount) FROM orders;

ในตัวอย่างนี้ SUM(total_amount) จะคำนวณผลรวมของค่าจากคอลัมน์ total_amount ในตาราง orders

1.3 AVG()

ฟังก์ชัน AVG() ใช้ในการหาค่าเฉลี่ยจากข้อมูลในคอลัมน์ที่เป็นตัวเลข

ตัวอย่าง:

SELECT AVG(price) FROM products;

ในตัวอย่างนี้ AVG(price) จะคำนวณค่าเฉลี่ยจากคอลัมน์ price ในตาราง products

1.4 MIN()

ฟังก์ชัน MIN() ใช้ในการหาค่าต่ำสุดจากคอลัมน์ที่เป็นตัวเลข, วันที่ หรือข้อมูลอื่น ๆ

ตัวอย่าง:

SELECT MIN(order_date) FROM orders;

ในตัวอย่างนี้ MIN(order_date) จะหาค่าวันที่ที่เก่าที่สุดในคอลัมน์ order_date ของตาราง orders

1.5 MAX()

ฟังก์ชัน MAX() ใช้ในการหาค่าสูงสุดจากคอลัมน์ที่เป็นตัวเลข, วันที่ หรือข้อมูลอื่น ๆ

ตัวอย่าง:

SELECT MAX(price) FROM products;

ในตัวอย่างนี้ MAX(price) จะหาค่าที่สูงสุดจากคอลัมน์ price ในตาราง products

2. การใช้ GROUP BY

คำสั่ง GROUP BY ใช้ในการจัดกลุ่มข้อมูลตามคอลัมน์ที่กำหนด โดยทำงานร่วมกับฟังก์ชันการรวมข้อมูล เช่น COUNT(), SUM(), AVG(), MIN(), และ MAX() เพื่อคำนวณค่าที่ต้องการสำหรับแต่ละกลุ่ม

ตัวอย่าง:

SELECT customer_id, COUNT(*) AS total_orders
FROM orders
GROUP BY customer_id;

ในตัวอย่างนี้ GROUP BY customer_id จะทำการจัดกลุ่มข้อมูลในตาราง orders ตาม customer_id และใช้ COUNT(*) เพื่อหาจำนวนคำสั่งซื้อที่ลูกค้าทุกคนทำ

ตัวอย่าง:

SELECT product_id, SUM(quantity) AS total_quantity
FROM order_items
GROUP BY product_id;

ในตัวอย่างนี้ GROUP BY product_id จะทำการจัดกลุ่มข้อมูลตาม product_id และใช้ SUM(quantity) เพื่อหาผลรวมของจำนวนสินค้าที่ถูกสั่งซื้อ

3. การใช้ HAVING

คำสั่ง HAVING ใช้ในการกรองกลุ่มข้อมูลที่ได้จาก GROUP BY โดยสามารถใช้เงื่อนไขในการกรองกลุ่มข้อมูลหลังจากการรวมข้อมูลแล้ว ซึ่งต่างจาก WHERE ที่ใช้กรองข้อมูลก่อนการรวม

ตัวอย่าง:

SELECT customer_id, SUM(total_amount) AS total_spent
FROM orders
GROUP BY customer_id
HAVING SUM(total_amount) > 1000;

ในตัวอย่างนี้ เรากำลังกรองลูกค้าที่ใช้จ่ายมากกว่า 1000 โดยใช้ HAVING ร่วมกับ SUM(total_amount) หลังจากที่ได้ทำการจัดกลุ่มข้อมูลด้วย GROUP BY customer_id

4. การใช้หลายฟังก์ชันการรวมข้อมูล

เราสามารถใช้หลายฟังก์ชันการรวมข้อมูลในคำสั่งเดียวได้ เพื่อให้ได้ข้อมูลสรุปหลายประเภทพร้อมกัน

ตัวอย่าง:

SELECT customer_id, COUNT(*) AS total_orders, SUM(total_amount) AS total_spent, AVG(total_amount) AS avg_order
FROM orders
GROUP BY customer_id;

ในตัวอย่างนี้ เรากำลังคำนวณจำนวนคำสั่งซื้อทั้งหมด, ผลรวมของการใช้จ่าย, และค่าเฉลี่ยของการใช้จ่ายสำหรับลูกค้าแต่ละคน โดยใช้ COUNT(), SUM(), และ AVG() ร่วมกัน

5. การใช้ DISTINCT กับ Aggregate Functions

ฟังก์ชัน DISTINCT สามารถใช้ร่วมกับฟังก์ชันการรวมข้อมูลเพื่อกรองค่าที่ซ้ำกันก่อนการคำนวณ เช่น การหาผลรวมของค่าที่ไม่ซ้ำกันหรือค่าเฉลี่ยของข้อมูลที่ไม่ซ้ำกัน

ตัวอย่าง:

SELECT COUNT(DISTINCT customer_id) AS unique_customers
FROM orders;

ในตัวอย่างนี้ COUNT(DISTINCT customer_id) จะนับจำนวนลูกค้าที่ไม่ซ้ำกันในตาราง orders

สรุป

การรวมข้อมูล (Aggregation) เป็นเครื่องมือที่สำคัญใน SQL ที่ช่วยให้เราสามารถสรุปข้อมูลจากหลายแถวให้กลายเป็นค่าตัวเดียว ฟังก์ชันการรวมข้อมูลที่ใช้บ่อย ได้แก่ COUNT(), SUM(), AVG(), MIN(), และ MAX() การใช้ GROUP BY ช่วยให้เราสามารถจัดกลุ่มข้อมูลและใช้ฟังก์ชันการรวมข้อมูลได้อย่างมีประสิทธิภาพ ขณะที่ HAVING ช่วยในการกรองกลุ่มข้อมูลหลังจากการรวมข้อมูลแล้ว