GROUP BY ใช้ทำอะไร?
จัดกลุ่มแถวที่มีค่าเหมือนกันในคอลัมน์ที่ระบุ แล้วคำนวณค่ารวม (Aggregate) ต่อกลุ่ม
รูปแบบคำสั่ง
SELECT expr1, expr2, ..., expr_n,
aggregate_function(expr)
FROM table_name
[WHERE condition]
GROUP BY expr1, expr2, ..., expr_n;
กฎสำคัญ
- คอลัมน์ใน SELECT ที่ ไม่ได้อยู่ในฟังก์ชันรวม ต้องอยู่ใน GROUP BY ทุกคอลัมน์
- ฟังก์ชันรวม:
SUM, COUNT, MIN, MAX, AVG
ตัวอย่าง
1. ใช้ SUM
SELECT ten_sanpham, SUM(soluong) AS 'Tong so luong'
FROM sanpham
GROUP BY ten_sanpham;
รวมจำนวนสินค้าต่อชื่อสินค้า
2. ใช้ COUNT
SELECT quanly_id, COUNT(*) AS 'So nhan vien'
FROM nhanvien
WHERE ho = 'Anderson'
GROUP BY quanly_id;
นับพนักงานนามสกุล Anderson ต่อหัวหน้า
3. ใช้ MIN
SELECT loai_sanpham, MIN(soluong) AS 'So luong it nhat'
FROM sanpham
GROUP BY loai_sanpham;
หาจำนวนน้อยที่สุดต่อประเภทสินค้า
4. ใช้ MAX
SELECT bophan, MAX(luong) AS 'Luong cao nhat'
FROM nhanvien
GROUP BY bophan;
หาเงินเดือนสูงสุดต่อแผนก