Lệnh Group By trong SQL Server
Trong bài này chúng ta sẽ tìm hiểu lệnh Group By trong SQL Server, đây là lệnh gop nhóm giúp bạn gom dữ liệu dựa theo một field nào đó.

Group By rất quan trọng trong các câu lệnh liên quan đến thống kê và tính toán, vì vậy bạn cần nắm vững nó không chỉ ở SQL Server mà ở hầu hết các hệ quản trị CSDL hiện nay.
1. Cú pháp Group By trong SQL Server
Nếu bạn đã học series T-SQL thì chắc chắn đã được mình giới thiệu qua về group by rồi. Nếu bạn chưa xem thì hãy quay lại đọc các bài viết ở đó trước nhé.
Gop nhóm hay còn gọi là gom tất cả những dòng trùng nhau thành 1 nhóm đứng cạnh nhau. Tiêu chí để biết trùng nhau hay không sẽ phục thuộc vào danh sách các field mà ta truyền vào ở lệnh Group By.
Bài viết này được đăng tại [free tuts .net]
Cú pháp của Group By trong SQL Server như sau:
SELECT
select_list
FROM
table_name
GROUP BY
column_name1,
column_name2 ,...;Trong đó bạn cần lưu ý rằng:
select_listlà danh sách các field muốn lấy, trong đó phải chứa những field mà bạn truyền ở group bytable_namelà tên table bạn muốn truy vấn. Có thể một hoặc nhiều table, thậm chí JOIN và Subquery vẫn được.column_name1,column_name2, .. là danh sách các field sẽ group by.
Ví dụ: Lấy danh sách customer_id và năm đặt hàng của hai khách hàng có id là 1 và 2.
SELECT
customer_id,
YEAR (order_date) order_year
FROM
sales.orders
WHERE
customer_id IN (1, 2)
ORDER BY
customer_id;Kết quả:

Như kết quả bạn thấy là sẽ gom thành hai nhóm như sau:
- Khách hàng ID 1 đặt 1 đơn vào năm 2016 và 2 đơn năm 2018
- Khách hàng ID 2 đặt 2 đơn 2017 và 1 đơn 2018
Bỏ qua tiêu chí xem tổng số đơn, bây giờ mình muốn lấy những năm mà khách hàng có ID 1 và 2 đã đặt hàng.
Với câu hỏi này thì ta phải gom nhóm thêm field order_year nữa, lúc này nó sẽ bỏ đi những dòng trùng nhau.
SELECT
customer_id,
YEAR (order_date) order_year
FROM
sales.orders
WHERE
customer_id IN (1, 2)
GROUP BY
customer_id,
YEAR (order_date)
ORDER BY
customer_id;
Về mặt chức năng thì ở câu hỏi này ta có thể thay thế bằng lệnh DISTINCT.
SELECT DISTINCT
customer_id,
YEAR (order_date) order_year
FROM
sales.orders
WHERE
customer_id IN (1, 2)
ORDER BY
customer_id;
2. Group By kết hợp các Function trong SQL Server
Group By trong SQL Server có thể kết hợp với các function như: SUM, AVG, MIN, MAX để thống kê dữ liệu.
Quay lại bài toán ở trên, bây giờ mình muốn lấy thông tin ID khách hàng, năm mà khách hàng đã đặt và tổng số đơn mà khách đã đặt theo từng năm.
Với yêu cầu này ta sẽ viết lại câu SQL như sau:
SELECT
customer_id,
YEAR (order_date) order_year,
COUNT (order_id) order_placed
FROM
sales.orders
WHERE
customer_id IN (1, 2)
GROUP BY
customer_id,
YEAR (order_date)
ORDER BY
customer_id; Hàm COUNT là hàm tính tổng số lượng record, nó sẽ tính tổng số record trong nhóm và trả về một số nguyên.

Đây là một ví dụ đơn giản thôi nhé.
3. Các ví dụ khác về Group By trong SQL Server
Hãy thực hành thêm vài ví dụ nữa, mình tin là bạn sẻ hiểu ra vấn đề.
Ví dụ 1: Lấy thông tin thành phố và tổng số khách hàng đang sống ở thành phố đó.
SELECT
city,
COUNT (customer_id) customer_count
FROM
sales.customers
GROUP BY
city
ORDER BY
city;
Ví dụ 2: Lấy thông tin gồm tên thành phố / tên state / tổng số khách hàng sống tai thành phố và state đó.
SELECT
city,
state,
COUNT (customer_id) customer_count
FROM
sales.customers
GROUP BY
state,
city
ORDER BY
city,
state;
Ví dụ 3: Lấy giá nhỏ nhất và cao nhất các sản phẩm sản xuất năm 2018 của từng thương hiệu.
SELECT
brand_name,
MIN (list_price) min_price,
MAX (list_price) max_price
FROM
production.products p
INNER JOIN production.brands b ON b.brand_id = p.brand_id
WHERE
model_year = 2018
GROUP BY
brand_name
ORDER BY
brand_name;
Trên là một vài kiến thức cơ bản của lệnh Group By trong SQL Server. Đây là lệnh gom nhóm khá quan trọng, nhất là những bạn DBA phải xuất báo cáo thường xuyên cho sếp. Chúc bạn thực hiện thành công nhé.

Thiết lập ID tăng tự động với Identity trong SQL Server
Khóa ngoại (Foreign Key) trong MySQL
Mô hình thực thể mối kết hợp (ER)
Gộp dữ liệu với UNION và UNION ALL trong SQL
Hàm Hàm TO_DATE trong Oracle
Cách khai báo biến trong PHP, các loại biến thường gặp
Download và cài đặt Vertrigo Server
Thẻ li trong HTML
Thẻ article trong HTML5
Cấu trúc HTML5: Cách tạo template HTML5 đầu tiên
Cách dùng thẻ img trong HTML và các thuộc tính của img
Thẻ a trong HTML và các thuộc tính của thẻ a thường dùng