Nếu như ở phần 2 của Bài giảng Cơ sở Dữ liệu SQL do ThS. Nguyễn Anh Việt biên soạn, tiếp tục trình bày ví dụ Quản lý bán hàng, với mức độ giải về các truy vấn khó hơn, nhằm giúp các bạn làm quen với các dạng câu truy vấn SQL. Mời các bạn cùng tham khảo.
Trang 1* Tìm mặt hàng ñược khách ñặt hàng nhiều nhất (có số lần ñặt hàng lớn nhất) Hiển thị MaMH, TenMH, SoLanDatHang
- Trước hết, tạo View ñể chứa số lần ñặt hàng của các mặt hàng
Create View "View - Dem Mat hang" as
Select ChiTietDH.MaMH, MatHang.TenMH, Count(ChiTietDH.MaMH) as SoLan From
ChiTietDH Inner Join MatHang On ChiTietDH.MaMH = MatHang.MaMH
Group by ChiTietDH.MaMH, MatHang.TenMH
- Kết quả như sau:
- Tiếp tục các mặt hàng ñược ñặt hàng nhiều nhất
Select MaMH, TenMH, SoLan from "View - Dem Mat hang"
Where SoLan = (Select Max(SoLan) from "View - Dem Mat hang")
- Kết quả như sau:
* Tìm Khách hàng có Tổng số tiền ñặt hàng trung bình trên một hoá ñơn là lớn nhất Hiển thị MaKH, TenKH, SoTienTB_HD
- Trước hết, tạo View ñể chứa số lượng hoá ñơn của các khách hàng
Create View "View - So luong Hoa don" as
SELECT DonDH.MaKH, KhachHang.TenKH, Count(DonDH.MaKH) AS [SoLuongHD]
FROM KhachHang INNER JOIN DonDH ON KhachHang.MaKH = DonDH.MaKH
GROUP BY DonDH.MaKH, KhachHang.TenKH
Trang 2- Kết quả như sau:
- Trong “View – Tong Thanh tien theo Khach hang” ñã có Tổng số tiền của từng Khách hàng, Đem số này chia cho Số lượng HĐ là có kết quả:
Create View "View - So tien TB tren HD" as
SELECT "View - So luong Hoa don".MaKH, "View - So luong Hoa don".TenKH,
"View - Thanh tien theo Khach hang"."Tong So Tien" / "View - So luong Hoa don".SoLuongHD as TBSoTienHD
FROM "View - So luong Hoa don" INNER JOIN "View - Thanh tien theo Khach hang" ON "View - Thanh tien theo Khach hang".MaKH = "View - So luong Hoa don".MaKH
- Kết quả như sau:
- Cuối cùng tìm khách hàng có số tiền TB trên hoá ñơn cao nhất:
SELECT MaKH, TenKH, TBSoTienHD
From "View - So tien TB tren HD"
Where TBSoTienHD = (Select Max(TBSoTienHD) from "View - So tien TB tren HD")
- Kết quả như sau:
Trang 3- Tạo View cho truy vấn:
Create View "View - Max So tien TB tren HD" as
SELECT MaKH, TenKH, TBSoTienHD
From "View - So tien TB tren HD"
Where TBSoTienHD = (Select Max(TBSoTienHD) from "View - So tien TB tren HD")
* Tìm các Khách hàng không có ñặt hàng trong tháng 5/2004 Hiển thị MaKH, TenKH
- Trước hết, tạo View ñể tìm các khách hàng có ñặt hàng trong tháng 5/2004:
Create View "View - Khach hang dat hang thang 5/2004" as
SELECT CONVERT(VARCHAR( 10 ),NgayGH, 103 ) as [Ngay GH], DonDH.MaKH,
KhachHang.TenKH
FROM KhachHang INNER JOIN (DonDH INNER JOIN ChiTietDH ON DonDH.MaDH =
ChiTietDH.MaDH) ON KhachHang.MaKH = DonDH.MaKH
Where NgayGH >= CONVERT(Varchar( 10 ), '2004/05/01' , 111 )
And NgayGH <= CONVERT(Varchar( 10 ), '2004/05/31' , 111 )
- Sau ñó tìm các khách hàng có trong danh sách KhachHang nhưng không có trong danh sách trên
Create View "View - Khach hang khong dat hang thang 5/2004" as
Select KhachHang.MaKH, KhachHang.TenKH from KhachHang
where KhachHang.MaKH not in (Select MaKH from "View - Khach hang dat hang thang 5/2004")
- Kết quả như sau:
* Tìm các Mặt hàng không có khách hàng nào ñặt hàng Hiển thị MaMH, TenMH
- Trước hết, tạo View ñể tìm các mặt hàng có ñặt hàng trong tất cả các ñơn ñặt hàng:
Create View "View - Mat hang co dat hang" as
Select Distinct ChiTietDH.MaMH, MatHang.TenMH from ChiTietDH Inner Join
MatHang on ChiTietDH.MaMH = MatHang.MaMH
Trang 4- Kết quả như sau:
- Tiếp tục tìm các mặt hàng không ñược ñặt hàng:
Create View "View - Mat hang khong co dat hang" as
Select MaMH, TenMH from MatHang
Where MaMH not in
(Select MaMH from "View - Mat hang co dat hang")
- Kết quả như sau: