Câu lệnh SELECT kèm nhóm với GROUP BY

Câu lệnh SELECT theo nhóm GROUP BY

Giới thiệu

Trong chương này, chúng ta sẽ tìm hiểu về Câu lệnh SQL SELECT- GROUP BY và cách sử dụng nó trong SQL.

CHỌN câu lệnh SQL GROUP BY 

Mệnh đề SQL GROUP BY được sử dụng trong câu lệnh SELECT để thu thập dữ liệu trên nhiều bản ghi và nhóm các kết quả theo một hoặc nhiều cột.
SQL GROUP BY chỉ trả về một kết quả cho mỗi nhóm dữ liệu, mệnh đề GROUP BY luôn theo sau mệnh đề WHERE và mệnh đề GROUP BY luôn đi trước câu lệnh ORDER BY
Mệnh đề câu lệnh SELECT chia kết quả truy vấn thành các nhóm hàng, thường nhằm mục đích thực hiện một hoặc nhiều tập hợp trên mỗi nhóm.
 
Điểm quan trọng
  • Câu lệnh GROUP BY được sử dụng với câu lệnh SELECT
  • Trong truy vấn, câu lệnh GROUP BY được đặt sau mệnh đề WHERE
  • Trong truy vấn, mệnh đề GROUP BY được đặt trước mệnh đề ORDER BY nếu được sử dụng bất kỳ
Cú pháp
  1. SELECT column_name(s)
  2. FROM table_name
  3. WHERE condition
  4. GROUP BY column_name(s)

Mệnh đề này hoạt động với danh sách các mục cụ thể được chọn và chúng ta có thể sử dụng các mệnh đề HAVING và ORDER BY. nhóm theo mệnh đề luôn hoạt động với hàm tổng hợp như MAX, MIN, SUM, AVG, COUNT

Cú pháp  
  1. Create table CarSale
  2. (
  3. Id int primary key identity(1,1) ,
  4. Model varchar(200),
  5. Price money
  6. )
  7. Insert into CarSale values(‘Baleno’, 900000),(‘M551’, 950000),(‘M551’, 950000),(‘L551’, 950000),
  8. (‘L538’, 650000),(‘L538’, 900000),(‘BWW’, 8000000),(‘8530’, 450000),(‘L530’,380000), (‘L545’, 280000)
Ví dụ
 

Hàm tổng hợp SQL 

MAX() 

Hàm này trả về giá trị lớn nhất của cột số của tiêu chí đã chỉ định
Cú pháp
  1. Select max(Price) As ‘MaximumCostOfModel’ from CarSale
Ví dụ 

MIN() 

Hàm này trả về giá trị nhỏ nhất của cột số của tiêu chí đã chỉ định
Cú pháp
  1. Select Min(Price) As ‘MinimumCostOfModel’ from  CarSale
Ví dụ

SUM() 

Hàm này trả về tổng của một cột số theo tiêu chí đã chỉ định
Cú pháp
  1. Select SUM(Price) As ‘SumCostOfAllModel’ from CarSale
Ví dụ 

AVG() 

Hàm trả về giá trị trung bình của một cột số của tiêu chí được chỉ định
Cú pháp 
  1. Select AVG(Price) As ‘AverageCostOfModel’ from  CarSale
Ví dụ
COUNT() 
Hàm này trả về số hàng phù hợp với tiêu chí đã chỉ định
Cú pháp
  1. Select Count(Price) As ‘TotalVehicleModels’ from CarSale
Ví dụ

Mệnh đề khác biệt 

Mệnh đề riêng biệt được sử dụng để lọc các bản ghi duy nhất ra khỏi các bản ghi trùng lặp đáp ứng tiêu chí truy vấn
Cú pháp
  1. Select Distinct(Model),  Price from CarSale
Ví dụ

CHỌN một mệnh đề GROUP BY đơn giản

Câu lệnh SELECT GROUP BY liệt kê Nhân viên của EmployeeDetails
Cú pháp
  1. SELECT EmployeeName,EmployeeAddress as EmployeeCity
  2. FROM EmployeeDetails
  3. GROUP BY EmployeeName, EmployeeAddress ORDER BY EmployeeName;
Ví dụ 
Câu lệnh CHỌN SQL - NHÓM THEO
Câu lệnh SQL GROUP BY liệt kê số lượng Nhân viên trong mỗi EmployeeId, được sắp xếp từ cao xuống thấp
Cú pháp  
  1. SELECT COUNT(EmployeeId), EmployeeName
  2. FROM EmployeeDetails
  3. GROUP BY EmployeeName
  4. ORDER BY COUNT(EmployeeID) DESC;
Ví dụ 
Câu lệnh CHỌN SQL - NHÓM THEO

Mệnh đề SELECT GROUP BY có nhiều bảng

Câu lệnh SELECT GROUP BY truy xuất số lượng nhân viên cho mỗi Tên nhân viên từ bảng EmployeeDetails được nối với bảng EmployeeDetail

Ví dụ này sử dụng một mẫu.

Cú pháp
  1. SELECT EmployeeName
  2. FROM EmployeeDetails
  3. INNER JOIN  EmployeeDetail
  4. ON EmployeeDetails.EmployeeID=EmployeeDetail.EmpId GROUP BY EmployeeName ORDER BY EmployeeName;
Ví dụ
Câu lệnh CHỌN SQL - NHÓM THEO

SELECT GROUP BY mệnh đề với một biểu thức

Câu lệnh SELECT GROUP BY truy xuất tổng số Chi tiết nhân viên bằng cách sử dụng hàm. Biểu thức giống nhau phải có trong cả danh sách SELECT và câu lệnh mệnh đề GROUP BY.
Cú pháp
  1. SELECT COUNT(EmployeeID), EmployeeName
  2. FROM EmployeeDetails
  3. GROUP BY EmployeeName;
Ví dụ
Câu lệnh CHỌN SQL - NHÓM THEO

Câu lệnh SELECT GROUP BY với mệnh đề HAVING

Câu lệnh SELECT GROUP BY sử dụng mệnh đề HAVING để chỉ định nhóm nào được tạo trong mệnh đề GROUP BY sẽ được đưa vào tập kết quả.
Cú pháp
  1. SELECT COUNT(EmployeeID)EmployeeAdress
  2. FROM EmployeeDetails
  3. GROUP BY EmployeeName
  4. HAVING COUNT(EmployeeID)> 1;
Ví dụ 
Câu lệnh CHỌN SQL - NHÓM THEO

SELECT GROUP BY cách sử dụng cơ bản

Mệnh đề SELECT GROUP BY tìm tổng số EmployeeID, EmployeeName cho EmployeeDetails.
Cú pháp
  1. SELECT COUNT(EmployeeID), EmployeeName from EmployeeDetails GROUP BY EmployeeName
Ví dụ  
Câu lệnh CHỌN SQL - NHÓM THEO

Sử dụng cơ bản DISTRIBUTED_AGG hint

Truy vấn CHỌN DISTRIBUTED_AGG hint để buộc công cụ xáo trộn bảng trên cột EmployeeDetails trước khi thực hiện tổng hợp.
Cú pháp 
  1. SELECT COUNT(EmployeeID), EmployeeName , EmployeeAddress
  2. FROM EmployeeDetails
  3. GROUP BY EmployeeName WITH (DISTRIBUTED_AGG), EmployeeAddress
  4. ORDER BY EmployeeName DESC
Ví dụ   
Câu lệnh CHỌN SQL - NHÓM THEO

SELECT Các biến thể cho câu lệnh GROUP BY

Các biến thể SELECT cho câu lệnh GROUP BY là danh sách chọn không có tập hợp, mỗi cột trong danh sách chọn phải được bao gồm trong danh sách GROUP BY. các cột được tính toán trong danh sách chọn có thể được liệt kê, nhưng không bắt buộc, trong danh sách GROUP BY. Đây là những ví dụ về câu lệnh SELECT hợp lệ về mặt cú pháp:
Cú pháp 
  1. SELECT EmployeeName, EmployeeAddress FROM EmployeeDetails GROUP BY EmployeeName, EmployeeAddress;
  2. SELECT EmpName FROM  EmployeeDetail GROUP BY EmpName, EmpAddress;
Ví dụ
Câu lệnh CHỌN SQL - NHÓM THEO

SELECT GROUP BY với nhiều biểu thức GROUP BY 

Ví dụ sau nhóm kết quả sử dụng nhiều GROUP BY EmployeeName If, trong mỗi nhóm EmployeeId
Cú pháp
  1. SELECT COUNT(EmployeeId), EmployeeName
  2. FROM EmployeeDetails
  3. GROUP BY EmployeeName
  4. ORDER BY COUNT(EmployeeID) DESC;
Ví dụ 
Câu lệnh CHỌN SQL - NHÓM THEO

Mệnh đề SELECT GROUP BY với mệnh đề HAVING

Mệnh đề GROUP BY HAVING sử dụng mệnh đề để chỉ định các nhóm được tạo trong mệnh đề GROUP BY sẽ được đưa vào tập kết quả
Cú pháp 
  1. SELECT COUNT(EmployeeId), EmployeeName
  2. FROM EmployeeDetails
  3. GROUP BY EmployeeName
  4. ORDER BY COUNT(EmployeeID) DESC;
Ví dụ
Câu lệnh CHỌN SQL - NHÓM THEO

 

(Source: https://www.c-sharpcorner.com/)

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *