22/08/2018, 11:17

Mệnh đề GROUP BY trong SQL Server

Mệnh đề GROUP BY trong SQL Server (Transact-SQL) được dùng trong lệnh SELECT để lấy dữ liệu từ nhiều bản ghi và nhóm kết quả vào 1 hoặc nhiều cột. Cú pháp mệnh đề GROUP BY trong SQL Server SELECT bieuthuc1, bieuthuc2, … bieuthuc_n, ham_tong ...

Mệnh đề GROUP BY trong SQL Server (Transact-SQL) được dùng trong lệnh SELECT để lấy dữ liệu từ nhiều bản ghi và nhóm kết quả vào 1 hoặc nhiều cột.

Cú pháp mệnh đề GROUP BY trong SQL Server

SELECT bieuthuc1, bieuthuc2, … bieuthuc_n,
  ham_tong (bieuthuc)
FROM bang
[WHERE dieukien]
GROUP BY bieuthuc1, bieuthuc2, … bieuthuc_n;

Tên biến hoặc giá trị biến

bieuthuc1, bieuthuc2, … bieuthuc_n

Biểu thức không nằm bên trong hàm tổng và phải nằm trong mệnh đề GROUP BY.

ham_tong

Có thể là các hàm như SUM, COUNT, MIN, MAX hoặc AVG.

bang

Bảng cần lấy bản ghi từ đó, phải có ít nhất 1 bảng trong mệnh đề FROM.

WHERE dieukien

Tùy chọn. Điều kiện mà bản ghi phải đáp ứng để được chọn nằm trong mệnh đề WHERE.

Ví dụ - dùng hàm SUM

SELECT ten_sanpham, SUM(soluong) AS “Tong so luong” 
FROM sanpham
GROUP BY ten_sanpham;

Ví dụ này dùng hàm tính tổng SUM để trả về tên sản phẩm và tổng số lượng (theo tên sản phẩm).

Vì bạn đưa ra 1 cột (ten_sanpham) trong lệnh SELECT và không nằm trong hàm SUM nên sẽ phải dùng mệnh đề GROUP BY.

Ví dụ - dùng hàm COUNT

SELECT quanly_id, COUNT (*) AS “So nhan vien”
FROM nhanvien
WHERE ho = ‘Anderson’
GROUP BY quanly_id;

Ở ví dụ này, hàm COUNT sẽ trả về quanly_id và số nhân viên có họ là Anderson.

Ví dụ - dùng hàm MIN

SELECT loai_sanpham, MIN(soluong) AS “So luong it nhat”
FROM sanpham
GROUP BY loai_sanpham;

Mệnh đề GROUP BY dùng với hàm MIN ở trên sẽ trả về loại sản phẩm và số lượng tối thiểu cho loại sản phẩm đó.

Ví dụ - dùng hàm MAX

SELECT bophan, MAX(luong) AS “Luong cao nhat”
FROM nhanvien
GROUP bophan;

Ví dụ cuối cùng này trả về tên của từng bộ phận và số lương tối đa trong bộ phận.

Bài trước: Điều kiện EXISTS trong SQL Server

Bài sau: Mệnh đề HAVING trong SQL Server

0