74
Bây giờ, có thể yêu cầu hiển thị chỉ những đơn hàng có tổng giá trị lớn hơn $1000 bằng
cách sử dụng HAVING như sau:
SELECT ordernumber,
sum(quantityOrdered) AS itemsCount,
sum(priceEach * quantityOrdered)
AS total
FROM orderdetails
GROUP BY ordernumber
HAVING total > 1000
Chúng ta sử dụng bí danh cho cột sum
(
priceEach * quantityOrdered
) là
total, như
vậy trong mệnh đề HAVING, chúng ta chỉ cần dùng
bí danh đó thay vì
Gõ
sum( priceeach) một lần nữa.
Có thể sử dụng một điều kiện kết hợp trong mệnh đề HAVING với các toán tử OR,
AND.
Ví dụ: nếu muốn biết những đơn hàng có tổng giá trị lớn hơn $ 1000 và có hơn 600 mặt
hàng trong đó, có thể sử dụng truy vấn sau đây:
75
SELECT ordernumber,
sum(quantityOrdered) AS itemsCount,
sum(priceeach) AS total
FROM orderdetails
GROUP BY ordernumber
HAVING total > 1000 AND itemsCount > 600
Bài tập thực hành
1. Đưa ra tên các thành phố và số lượng khách hàng tại từng thành phố.
2. Đưa ra số lượng các đơn đặt hàng trong tháng 3/2005.
3. Đưa ra số lượng các đơn đặt hàng trong từng tháng của năm 2005
4. Đưa ra 10 mã đơn đặt hàng có giá trị lớn nhất.
5. Đưa ra mã nhóm hàng và tổng số lượng hàng hoá còn trong kho của nhóm hàng
đó.
Chia sẻ với bạn bè của bạn: