คำสั่ง GROUP BY ใน SQL Server ใช้สำหรับจัดกลุ่มข้อมูลที่มีค่าซ้ำกัน
ให้อยู่ในกลุ่มเดียวกัน และมักใช้ร่วมกับฟังก์ชันคำนวณ เช่น
COUNT(), SUM(), AVG(), MAX() และ MIN() เพื่อสรุปผลข้อมูล
เช่น การรวมยอดขาย การนับจำนวนรายการ หรือการหาค่าเฉลี่ยของข้อมูล
โครงสร้างคำสั่ง GROUP BY
SELECT column_name, aggregate_function(column_name)
FROM table_name
GROUP BY column_name;
คำอธิบาย
- column_name คือคอลัมน์ที่ต้องการจัดกลุ่ม
- aggregate_function คือฟังก์ชันคำนวณ เช่น SUM, COUNT
- table_name คือชื่อตารางที่ต้องการดึงข้อมูล
ตัวอย่างตารางข้อมูล
sales
--------------------------
id | product | amount
--------------------------
1 | A | 100
2 | A | 200
3 | B | 150
4 | B | 300
5 | C | 250
ตัวอย่างที่ 1: รวมยอดขายตามสินค้า
SELECT product, SUM(amount) AS total_sales
FROM sales
GROUP BY product;
ผลลัพธ์
product | total_sales
---------------------
A | 300
B | 450
C | 250
คำสั่งนี้จะรวมยอดขายของสินค้าแต่ละประเภท
ตัวอย่างที่ 2: นับจำนวนรายการของสินค้า
SELECT product, COUNT(*) AS total_item
FROM sales
GROUP BY product;
ผลลัพธ์
product | total_item
--------------------
A | 2
B | 2
C | 1
คำสั่งนี้ใช้สำหรับนับจำนวนรายการของสินค้าแต่ละชนิด
ตัวอย่างที่ 3: ใช้ GROUP BY หลายคอลัมน์
SELECT product, year, SUM(amount) AS total_sales
FROM sales
GROUP BY product, year;
กรณีนี้ข้อมูลจะถูกจัดกลุ่มตามทั้งสินค้าและปี
การใช้ HAVING ร่วมกับ GROUP BY
HAVING ใช้สำหรับกรองข้อมูลหลังจากที่ GROUP BY ทำงานแล้ว
SELECT product, SUM(amount) AS total_sales
FROM sales
GROUP BY product
HAVING SUM(amount) > 300;
คำสั่งนี้จะแสดงเฉพาะสินค้าที่มียอดขายรวมมากกว่า 300
ข้อควรระวังในการใช้ GROUP BY
- ทุกคอลัมน์ที่อยู่ใน SELECT ต้องอยู่ใน GROUP BY หรือเป็นฟังก์ชัน Aggregate
- GROUP BY จะทำงานก่อน ORDER BY
- HAVING ใช้กรองข้อมูลหลัง GROUP BY
สรุป
GROUP BY เป็นคำสั่งสำคัญสำหรับการสรุปข้อมูลใน SQL Server
โดยใช้จัดกลุ่มข้อมูลตามคอลัมน์ที่ต้องการ และใช้ร่วมกับฟังก์ชันคำนวณ
เช่น SUM(), COUNT() หรือ AVG() เพื่อสร้างรายงานหรือสรุปข้อมูล
ในระบบฐานข้อมูลได้อย่างมีประสิทธิภาพ
