You are on page 1of 17

Bài 11: NHÓM VÀ THỐNG KÊ DỮ LIỆU

Mục tiêu
 Giới thiệu
 Các hàm thống kê thường dùng
 Hàm AVG()
 Hàm COUNT()
 Hàm MIN()
 Hàm SUM()
 Hàm FIRST()
 Hàm LAST()
 Câu GROUP BY với mệnh đề HAVING

2
Giới thiệu
 SQL Server đưa vào nhiều tính năng truy vấn mạnh mẽ giúp cho việc quản lý, tính toán
và lấy dữ liệu ra một cách nhanh chóng và hiệu quả.
 Dữ liệu có thể được nhóm hoặc tổng hợp cùng nhau để thể hiện thông tin tổng kết.
 Việc sử dụng các hàm để tính toán dữ liệu giúp cho người quản lý có thể đưa ra được
các bảng báo cáo một cách đầy đủ và chính xác. Đặc biệt là với các trường thông tin
không có sẵn trong bảng của cơ sở dữ liệu.
 Mệnh đề GROUP BY cho phép nhóm tập kết quả thành một hoặc nhiều tập con. Mỗi
tập kết quả có các giá trị và biểu thức chung.

Dưới đây là các hàm thống kê thường dùng:


 AVG(), COUNT(), FIRST(), LAST(), MAX(), MIN(), SUM()

3
Một số hàm thống kê và tổng hợp dữ liệu
Hàm AVG().
Cú pháp:

Ví dụ: Câu lệnh SQL sau đây lấy giá trị trung bình của cột “Giá” từ bảng sản phẩm:

SELECT AVG(Price) AS PriceAverage FROM Products;

Ví dụ: Câu lệnh SQL sau đây lấy ra tên sản phẩm, giá sản phẩm từ bảng sản phẩm của
tất cả các sản phẩm có giá lớn hơn giá trung bình.

SELECT ProductName, Price FROM Products


WHERE Price>(SELECT AVG(Price) FROM Products);

4
Một số hàm thống kê và tổng hợp dữ liệu
Hàm COUNT().
Cú pháp:
SELECT COUNT(column_name) FROM table_name;

Ví dụ: Câu lệnh SQL sau đây đếm số lượng đơn hàng có mã khách hàng là 7.

SELECT COUNT(CustomerID) AS OrdersFromCustomerID7 FROM


Orders
WHERE CustomerID=7;

5
Một số hàm thống kê và tổng hợp dữ liệu
Hàm COUNT().
Hàm Count có thể kết hợp với toán tử * hoặc từ khóa DISTINCT

SELECT COUNT(*) FROM table_name;

SELECT COUNT(DISTINCT column_name) FROM table_name;


Ví dụ: Count kết hợp với toán tử *
SELECT COUNT(*) AS NumberOfOrders FROM Orders;

Ví dụ: Count kết hợp với DISTINCT


SELECT COUNT(DISTINCT CustomerID) AS NumberOfCustomers
FROM Orders;

6
Một số hàm thống kê và tổng hợp dữ liệu
Hàm MIN().
Cú pháp:

Ví dụ:
SELECT MIN(Price) AS SmallestOrderPrice FROM Products;

7
Một số hàm thống kê và tổng hợp dữ liệu
Hàm SUM().
Cú pháp:

Ví dụ:
SELECT SUM(Quantity) AS TotalItemsOrdered FROM OrderDetails;

8
Một số hàm thống kê và tổng hợp dữ liệu
Hàm FIRST().
Cú pháp:

Ví dụ:

SELECT FIRST(CustomerName) AS FirstCustomer FROM


Customers;

9
Một số hàm thống kê và tổng hợp dữ liệu
Hàm LAST().
Cú pháp:

10
Nhóm và thống kê
 Hàm thống kê thực hiện tính toán trên tập giá trị và trả về giá trị duy nhất.
 Các hàm thống kê đều bỏ qua giá trị NULL, trừ hàm Count.
 Hàm thống kê thường được sử dụng với mệnh đề GROUP BY của câu lệnh
SELECT.
 Khi sử dụng hàm thống kê trong phần danh sách cột của câu lệnh SELECT thường
tạo ra một cột không có tên, do vậy để tạo ra tên của cột bạn có thể dùng mệnh đề AS
để cung cấp cho nó một cái tên (Bí danh).

11
Lệnh Select kết hợp group by
Cú pháp:

Ví dụ: Câu lệnh truy vấn sau thống kê số lượng sản phẩm bằng lệnh Group
By.
Select TenKH, Count(idsp) as ‘Tổng sản phẩm mua’
From tblBanHang, tblKhachHang
Where tblBanHang.idkh=tblKhachHang.idkh
Group by tblKhachHang.tenkh

12
Lệnh Select kết hợp group by
Câu lệnh Group by có thể được sử dụng trên nhiều cột để nhóm dữ liệu như ví
dụ dưới đây.
SELECT Shippers.ShipperName, Employees.LastName,
COUNT(Orders.OrderID) AS
NumberOfOrders FROM
((Orders
INNER JOIN Shippers
ON
Orders.ShipperID=Shippers.Shi
pperID) INNER JOIN
Employees
ON
Orders.EmployeeID=Employees.Em
ployeeID) GROUP BY
ShipperName,LastName;

13
Lệnh Select kết hợp having
 Câu lệnh select kết hợp với mệnh đề having cho phép giới hạn các điều kiện
khi thống kê dữ liệu theo nhóm.
 Cú pháp câu lệnh như sau:

14
Lệnh Select kết hợp having
 Ví dụ: Muốn tìm và lấy ra các nhân viên đã đăng ký số lượng đơn hàng lớn
hơn 10.
 Chúng ta sử dụng câu lệnh Select kết hợp vơi mệnh đề having như sau:
SELECT Employees.LastName, COUNT(Orders.OrderID) AS
NumberOfOrders FROM (Orders
INNER JOIN Employees
ON
Orders.EmployeeID=Employees.E
mployeeID) GROUP BY
LastName
HAVING COUNT(Orders.OrderID) > 10;

15
Lệnh Select kết hợp having
 Ví dụ: Muốn tìm và lấy ra các nhân viên có tên là ‘Davolio’ hoặc ‘Fuller’
đăng ký lớn hơn 25 đơn hàng.
 Chúng ta sử dụng câu lệnh Select kết hợp vơi mệnh đề having kết hợp với
where như sau:

SELECT Employees.LastName, COUNT(Orders.OrderID) AS


NumberOfOrders FROM Orders
INNER JOIN Employees
ON Orders.EmployeeID=Employees.EmployeeID
WHERE LastName='Davolio' OR
LastName='Fuller' GROUP BY
LastName
HAVING COUNT(Orders.OrderID) > 25;

16
THANK YOU

You might also like