Company insights

การใช้งาน GROUP BY ใน SQL Server


คำสั่ง 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() เพื่อสร้างรายงานหรือสรุปข้อมูล
ในระบบฐานข้อมูลได้อย่างมีประสิทธิภาพ