-
Giới thiệu về phân tích dữ liệu và các công cụ
-
Ngôn ngữ SQL Cơ bản
-
Ngôn ngữ SQL nâng cao
-
Giới thiệu về Power BI và các kỹ thuật tổng hợp làm sạch dữ liệu
-
Trực quan hóa dữ liệu với Power BI
-
Xuất bản và chia sẻ
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
- SELECT column_name(s)
- FROM table_name
- WHERE condition
- 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
- Create table CarSale
- (
- Id int primary key identity(1,1) ,
- Model varchar(200),
- Price money
- )
- Insert into CarSale values(‘Baleno’, 900000),(‘M551’, 950000),(‘M551’, 950000),(‘L551’, 950000),
- (‘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
- 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
- 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
- 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
- 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
- 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
- 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
- SELECT EmployeeName,EmployeeAddress as EmployeeCity
- FROM EmployeeDetails
- GROUP BY EmployeeName, EmployeeAddress ORDER BY EmployeeName;
Ví dụ
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
- SELECT COUNT(EmployeeId), EmployeeName
- FROM EmployeeDetails
- GROUP BY EmployeeName
- ORDER BY COUNT(EmployeeID) DESC;
Ví dụ
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
- SELECT EmployeeName
- FROM EmployeeDetails
- INNER JOIN EmployeeDetail
- ON EmployeeDetails.EmployeeID=EmployeeDetail.EmpId GROUP BY EmployeeName ORDER BY EmployeeName;
Ví dụ
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
- SELECT COUNT(EmployeeID), EmployeeName
- FROM EmployeeDetails
- GROUP BY EmployeeName;
Ví dụ
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
- SELECT COUNT(EmployeeID)EmployeeAdress
- FROM EmployeeDetails
- GROUP BY EmployeeName
- HAVING COUNT(EmployeeID)> 1;
Ví dụ
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
- SELECT COUNT(EmployeeID), EmployeeName from EmployeeDetails GROUP BY EmployeeName
Ví dụ
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
- SELECT COUNT(EmployeeID), EmployeeName , EmployeeAddress
- FROM EmployeeDetails
- GROUP BY EmployeeName WITH (DISTRIBUTED_AGG), EmployeeAddress
- ORDER BY EmployeeName DESC
Ví dụ
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
- SELECT EmployeeName, EmployeeAddress FROM EmployeeDetails GROUP BY EmployeeName, EmployeeAddress;
- SELECT EmpName FROM EmployeeDetail GROUP BY EmpName, EmpAddress;
Ví dụ
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
- SELECT COUNT(EmployeeId), EmployeeName
- FROM EmployeeDetails
- GROUP BY EmployeeName
- ORDER BY COUNT(EmployeeID) DESC;
Ví dụ
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
- SELECT COUNT(EmployeeId), EmployeeName
- FROM EmployeeDetails
- GROUP BY EmployeeName
- ORDER BY COUNT(EmployeeID) DESC;
Ví dụ
(Source: https://www.c-sharpcorner.com/)