2. Ràng buô ̣c trên nhiều quan
4.3 Yều cầu từ các nghiê ̣p v ụ bán hàng 30.
b.3.4 Lâp danh sách khối lượng giao di ̣ch của khách hàng có mã là x. Danh sách gồm mã khách hàng, ho ̣ tên, tổng khối lượng giao di ̣ch
TongKhoiLuongGiaoDich
FROM KhachHang AS KH INNER JOIN
HoaDon AS HD ON KH.MaKH = HD.MaKH
WHERE (HD.MaKH = 'KH10') GROUP BY KH.MaKH, KH.Ten
b.3.5 Lâ ̣p danh sách những hóa đơn đã thanh toán . Danh sách gồm có mã hoá đơn, mã nhân viên, mã khách hàng ,ngày lập, tổng giá trị
SELECT MaHD, MaNV, MaKH, NgayLap, TongGiaTri
FROM (SELECT MaHD, MaNV, MaKH, NgayLap, ISNULL(SoTien, 0) AS SoTienNo, TongGiaTri, SoTien, NgayHen
FROM (SELECT HD.MaHD, HD.MaNV, HD.MaKH, HD.NgayLap,
HD.TongGiaTri, CNB.MaCNB, CNB.SoTien, CNB.NgayHen
FROM HoaDon AS HD LEFT OUTER JOIN
CongNoBan AS CNB ON HD.MaHD = CNB.MaHD) ) WHERE (SoTienNo = '0')
b.3.7 Lâ ̣p danh sách mă ̣t hàng có số lượng bán nhiều nhất trong năm 2008. Danh sách gồm mã hàng, tên hàng, số lượng bán.
SELECT MaHang, TenHang, SoLuongBan
FROM (SELECT HH.MaHang, HH.TenHang, SUM(CTHD.SoLuong) AS
SoLuongBan
FROM HangHoa AS HH INNER JOIN
ChiTietHoaDon AS CTHD ON HH.MaHang = CTHD.MaHang GROUP BY HH.MaHang, HH.TenHang
WHERE (SoLuongBan >= ALL (SELECT SoLuongBan
FROM (SELECT HH.MaHang, HH.TenHang,
SUM(CTHD.SoLuong) AS SoLuongBan FROM HangHoa AS HH INNER JOIN
ChiTietHoaDon AS CTHD ON HH.MaHang = CTHD.MaHang
GROUP BY HH.MaHang, HH.TenHang)))
b.3.8 Lâ ̣p bảng thống kê các mă ̣t hàng đuợc bán ra năm 2008. Danh sách gồm có mã hàng, tên hàng, tổng số lượng bán, doanh thu, lợi nhuâ ̣n từ các mă ̣t hàng đó.
SELECT HH.MaHang, HH.TenHang, SUM(CTHD.SoLuong) AS TongSoLuong, SUM(CTHD.SoLuong * CTHD.DonGia) AS DoanhThu,
SUM((CTHD.DonGia - HH.DonGia) * CTHD.SoLuong) AS LoiNhuan FROM HangHoa AS HH INNER JOIN
ChiTietHoaDon AS CTHD ON HH.MaHang = CTHD.MaHang INNER JOIN HoaDon AS HD ON CTHD.MaHD = HD.MaHD
WHERE (YEAR(HD.NgayLap) = '2008') GROUP BY HH.MaHang, HH.TenHang
b.3.9 Lâ ̣p danh sách mă ̣t hàng mang la ̣i nhiều lợi nhuâ ̣n nhất cho công ty. Danh sách gồm mã hàng, tên hàng, lợi nhuâ ̣n
SELECT MaHang, TenHang, LoiNhuan
FROM (SELECT HH.MaHang, HH.TenHang, SUM((CTHD.DonGia – HH.DonGia) * CTHD.SoLuong) AS LoiNhuan FROM HangHoa AS HH INNER JOIN
ChiTietHoaDon AS CTHD ON HH.MaHang = CTHD.MaHang GROUP BY HH.MaHang, HH.TenHang)
WHERE (LoiNhuan >= ALL (SELECT LoiNhuan
LoiNhuan
FROM HangHoa AS HH INNER JOIN
ChiTietHoaDon AS CTHD ON HH.MaHang = CTHD.MaHang
GROUP BY HH.MaHang, HH.TenHang)))
b.3.10 Tính doanh thu và lợi nhuân của công ty trong năm 2008.
SELECT SUM(CTHD.DonGia * CTHD.SoLuong) AS DoanhThu,
SUM((CTHD.DonGia - HH.DonGia) * CTHD.SoLuong) AS LoiNhuan FROM HangHoa AS HH INNER JOIN
ChiTietHoaDon AS CTHD ON HH.MaHang = CTHD.MaHang INNER JOIN HoaDon AS HD ON CTHD.MaHD = HD.MaHD
WHERE (YEAR(HD.NgayLap) = '2008')
b.3.11 Lâ ̣p bảng thống kê doanh, thu lợi nhuâ ̣n của từng tháng của năm 2008. Danh sách gồm có tháng, doanh thu, lợi nhuâ ̣n.
SELECT Thang, SUM(DonGiaBan * SoLuong) AS DoanhThu, SUM((DonGiaBan - DonGia) * SoLuong) AS LoiNhuan
FROM (SELECT HH.DonGia, CTHD.DonGia AS DonGiaBan, CTHD.SoLuong, MONTH(HD.NgayLap) AS Thang
FROM HangHoa AS HH INNER JOIN
ChiTietHoaDon AS CTHD ON HH.MaHang = CTHD.MaHang INNER JOIN HoaDon AS HD ON CTHD.MaHD = HD.MaHD WHERE (YEAR(HD.NgayLap) = '2008')) AS derivedtbl_1
GROUP BY Thang
b.3.12 Lâ ̣p danh sách
các mă ̣t hàng mà khách hàng có mãkh là x đã mua
Danh sách gồm có mã hàng, tên hàng, số lượng, số tiền bỏ ra để mua mă ̣t hàng đó
SELECT HH.MaHang, HH.TenHang, SUM(CTHD.SoLuong) AS TongSoLuong, SUM(CTHD.SoLuong * CTHD.DonGia) AS TongGiaTri
FROM HangHoa AS HH INNER JOIN
ChiTietHoaDon AS CTHD ON HH.MaHang = CTHD.MaHang INNER JOIN HoaDon AS HD ON CTHD.MaHD = HD.MaHD
WHERE (HD.MaKH = 'KH10') GROUP BY HH.MaHang, HH.TenHang
b.3.13 Tìm ra tháng trong năm 2008 mà công ty có lợi nhuận lớn nhất
SELECT Thang, LoiNhuan
FROM (SELECT Thang, SUM((DonGiaBan - DonGia) * SoLuong) AS LoiNhuan FROM (SELECT HH.DonGia, CTHD.DonGia AS DonGiaBan,
CTHD.SoLuong, MONTH(HD.NgayLap) AS Thang FROM HangHoa AS HH INNER JOIN
ChiTietHoaDon AS CTHD ON HH.MaHang = CTHD.MaHang INNER JOIN
HoaDon AS HD ON CTHD.MaHD = HD.MaHD
WHERE (YEAR(HD.NgayLap) = '2008')) GROUP BY Thang)
WHERE (LoiNhuan >= ALL (SELECT LoiNhuan
FROM (SELECT Thang, SUM((DonGiaBan - DonGia) * SoLuong) AS LoiNhuan
FROM (SELECT HH.DonGia, CTHD.DonGia AS
DonGiaBan, CTHD.SoLuong, MONTH(HD.NgayLap) AS Thang
FROM HangHoa AS HH INNER JOIN ChiTietHoaDon AS CTHD ON
HH.MaHang = CTHD.MaHang INNER JOIN HoaDon AS HD ON CTHD.MaHD = HD.MaHD WHERE (YEAR(HD.NgayLap) = '2008'))
GROUP BY Thang)))
b.3.14 Tính tháng có nhiều khách hàng đến mua hàng nhất.
SELECT Thang, SoKhachHang
FROM (SELECT DISTINCT MONTH(NgayLap) AS Thang, MaKH FROM HoaDon)
GROUP BY Thang) WHERE (SoKhachHang >= ALL (SELECT SoKhachHang
FROM (SELECT Thang, COUNT(MaKH) AS SoKhachHang FROM (SELECT DISTINCT MONTH(NgayLap) AS
Thang, MaKH
FROM HoaDon) GROUP BY Thang)))
b.3.15 Lập danh sách top 5 mặt hàng thu về nhiều lợi nhuận cho công ty nhất. danh sách gồm mã hàng, tên hàng, lợi nhuâ ̣n.
SELECT TOP (5) MaHang, TenHang, LoiNhuan
FROM (SELECT HH.MaHang, HH.TenHang, SUM((CTHD.DonGia – HH.DonGia) * CTHD.SoLuong) AS LoiNhuan
FROM HangHoa AS HH INNER JOIN
ChiTietHoaDon AS CTHD ON HH.MaHang = CTHD.MaHang GROUP BY HH.MaHang, HH.TenHang)
ORDER BY LoiNhuan DESC
b.3.16 Lập bảng thống kê doanh thu, lợi nhuận của công ty theo khu vực địa lý(khu vưc địa lý theo địa chỉ của khách hàng)
SELECT KH.DiaChi AS KhuVuc, SUM(CTHD.SoLuong * CTHD.DonGia) AS DoanhThu, SUM((CTHD.DonGia - HH.DonGia) * CTHD.SoLuong) AS LoiNhuan
FROM KhachHang AS KH INNER JOIN
HoaDon AS HD ON KH.MaKH = HD.MaKH INNER JOIN
ChiTietHoaDon AS CTHD ON HD.MaHD = CTHD.MaHD INNER JOIN HangHoa AS HH ON CTHD.MaHang = HH.MaHang
b.3.17 Lập danh sách những hóa đơn đã thanh toán. Danh sách gồm mã hóa đơn, mã nhân viên, mã khách hàng,ngày lập,tổng giá trị, lợi nhuận.
SELECT MaHD, MaNV, MaKH, NgayLap, TongGiaTri, LoiNhuan
FROM (SELECT HTH.MaHD, HTH.MaNV, HTH.MaKH, HTH.NgayLap, HTH.TongGiaTri, HTH.LoiNhuan, ISNULL(CNB.SoTien, 0) AS SoTienNo FROM (SELECT HD.MaHD, HD.MaNV, HD.MaKH, HD.NgayLap,
SUM(CTHD.DonGia * CTHD.SoLuong) AS TongGiaTri, SUM((CTHD.DonGia - HH.DonGia) * CTHD.SoLuong)
AS LoiNhuan
FROM HoaDon AS HD INNER JOIN
ChiTietHoaDon AS CTHD ON HD.MaHD = CTHD.MaHD
INNER JOINHangHoa AS HH ON CTHD.MaHang =
HH.MaHang
GROUP BY HD.MaHD, HD.MaNV, HD.MaKH, HD.NgayLap) AS HTH LEFT OUTER JOIN CongNoBan AS CNB ON HTH.MaHD = CNB.MaHD)
WHERE (SoTienNo = '0')