การรวมข้อมูล (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 ช่วยในการกรองกลุ่มข้อมูลหลังจากการรวมข้อมูลแล้ว