1. Count()
2. Sum()
3. avg()
4. Min()
5. Max()
Mệnh đề GROUP by được sử dụng để lựa chọn một số hàng trong một tập hợp mà giá trị của nó thuộc về một hoặc nhiều cột hoặc thỏa mãn một biểu thức nào đó. Nó luôn được sử dụng với một hoặc nhiều hơn các hàm tổng hợp trên kia.
Câu lệnh truy vấn để lấy thông lương của các thành phố:
Chúng ta sử dung hàm tổng hợp SUM() cho cột Salary, và gom lại bằng cột thành phố. Nó hiệu quả thêm ở chổ cho biết tổng lương của người lao động trong cùng một thành phố.
Select City, SUM(Salary) as TotalSalary
from tblEmployee
Group by City
Lưu ý: Nếu bạn bỏ qua không nhóm bằng mệnh đề group by và cố gắng thực thi truy vấn nó sẽ hiện thông báo lỗi như sau -Column 'tblEmployee.City' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Bây giờ, tôi muốn một truy vấn, nó tính tổng lương bằng City và gender. Kết quả thực thi như sau
Truy vấn lấy tổng các lương bởi city và gender. Nó có thể gom nhóm bằng nhiều cột. Trong truy vấn này, chúng ta gom nhóm thuộc tính đầu tiền là city và sau đó là gender
Select City, Gender, SUM(Salary) as TotalSalary
from tblEmployee
group by City, Gender
Bây giờ, tôi muốn một truy vấn trả về tổng các lương và tổng số các nhân viên theo thành phố và theo giới tính. Kết quả xuất ra như sau:
Truy vấn này sẽ trả về tổng lương và tổng số nhân viên theo City và gender. Sự khác biệt duy nhất ở đây là chúng ta sử dụng hàm tổng hợp Coutn()Select City, Gender, SUM(Salary) as TotalSalary,
COUNT(ID) as TotalEmployees
from tblEmployee
group by City, Gender
Lọc các giá trị:
Mệnh đề WHERE được sử dụng để lọc các hàng trước khi tổng hợp, trong khi mệnh đề HAVING là sử dụng để lọc nhưng lọc nhưng là lọc các điều kiện trên nhóm
SELECT <danh sách các cột>
FROM <danh sách các bảng>
WHERE <điều kiện>
GROUP BY <danh sách các cột gom nhóm>
HAVING <điều kiện trên nhóm>
Lọc các hàng sử dụng mệnh đề WHERE, trước khi tổng hợp theo nhóm:Select City, SUM(Salary) as TotalSalary
from tblEmployee
Where City = 'London'
group by City
Lọc các nhóm sử dụng mệnh đề HAVING, sau khi tất cả đã được tổng hợp:Select City, SUM(Salary) as TotalSalary
from tblEmployee
group by City
Having City = 'London'
"From a performance standpoint, you cannot say that one method is less efficient than the other. Sql server optimizer analyzes each statement and selects an efficient way of executing it. As a best practice, use the syntax that clearly describes the desired result. Try to eliminate rows that
you wouldn't need, as early as possible"
Cũng có thể kết hợp WHERE và HAVINGSelect City, SUM(Salary) as TotalSalary
from tblEmployee
Where Gender = 'Male'
group by City
Having City = 'London'
Sự khác biệt giữa 2 mệnh đề WHERE và HAVING:
1. WHERE clause can be used with - Select, Insert, and Update statements, where as HAVING clause can only be used with the Select statement.
2. WHERE filters rows before aggregation (GROUPING), where as, HAVING filters groups, after the aggregations are performed.
3. Aggregate functions cannot be used in the WHERE clause, unless it is in a sub query contained in a HAVING clause, whereas, aggregate functions can be used in Having clause.
Không có nhận xét nào:
Đăng nhận xét