You are on page 1of 4

SELECT * FROM quanlykhachhang.

quanlykhachhang;

/*Lab6*/

/*a. Hiển thị tất cả thông tin có trong 2 bảng Hoá đơn và Hoá đơn chi tiết gồm các cột sau:
maHoaDon, maKhachHang, trangThai, maSanPham, soLuong, ngayMua:*/

SELECT a.mahd, makh, trangthai, masp, soluong, ngaymuahang

FROM hoadon a

INNER JOIN hoadonchitiet b

ON a.mahd = b.mahd;

/*b. Hiển thị tất cả thông tin có trong 2 bảng Hoá đơn và Hoá đơn chi tiết gồm các cột sau:
maHoaDon, maKhachHang, trangThai, maSanPham, soLuong, ngayMua với điều kiện maKhachHang
= ‘KH001’*/

select hd.mahd, Makh, trangthai, masp, soluong, ngaymuahang

FROM hoadon hd

inner join hoadonchitiet hdct

on hd.mahd = hdct.mahd

where makh = '11';

/*c. Hiển thị thông tin từ 3 bảng Hoá đơn, Hoá đơn chi tiết và Sản phẩm gồm các cột

sau: maHoaDon, ngayMua, tenSP, donGia, soLuong mua trong hoá đơn, thành

tiền Với thành tiền= donGia* soLuong*/

select hd.mahd, ngaymuahang , tensp, dongia, hdct.soluong from hoadon hd

inner join hoadonchitiet hdct

on hd.mahd = hdct.mahd

INNER JOIN sanpham sp

on hdct.masp = sp.masp;

/*d. Hiển thị thông tin từ bảng khách hàng, bảng hoá đơn, hoá đơn chi tiết gồm các

cột: họ và tên khách hàng, email, điện thoại, mã hoá đơn, trạng thái hoá đơn và

tổng tiền đã mua trong hoá đơn. Chỉ hiển thị thông tin các hoá đơn chưa thanh

toán.*/
SELECT holot+''+ten as 'ho va ten', email, sdt, hd.mahd, trangthai , hdct.soluong * dongia as
'tongtien'

FROM khachhang kh

INNER JOIN hoadon hd

ON hd.makh = kh.makh

INNER JOIN hoadonchitiet hdct

ON hd.mahd = hdct.mahd

INNER JOIN sanpham sp

ON sp.masp = hdct.masp

where trangthai like N'chua thanh toan';

/*e. Hiển thị maHoaDon, ngàyMuahang, tổng số tiền đã mua trong từng hoá đơn. Chỉ

hiển thị những hóa đơn có tổng số tiền >=500.000 và sắp xếp theo thứ tự giảm dần

của cột tổng tiền.*/

SELECT hd.mahd, ngaymuahang, SUM(hdct.soluong * dongia) as'tong tien'

from hoadon hd

INNER JOIN hoadonchitiet hdct

ON hd.mahd = hdct.mahd

INNER JOIN sanpham sp

ON sp.masp = hdct.masp

group by hd.mahd, ngaymuahang;

/*PHẦN II*/

/*a. Hiển thị danh sách các khách hàng chưa mua hàng lần nào kể từ tháng 1/1/2016*/

SELECT * FROM khachhang

WHERE makh not in (select makh from hoadon where ngaymuahang >= '2016-07-01');

SELECT makh, ngaymuahang from hoadon WHERE ngaymuahang >='2016-07-01' ;

/*b. Hiển thị mã sản phẩm, tên sản phẩm có lượt mua nhiều nhất trong tháng 12/2016*/

SELECT a.masp, c.tensp, COUNT(*) as luotmua

FROM hoadonchitiet a
INNER JOIN hoadon b on a.mahd = b.mahd

INNER JOIN sanpham c on a.masp = c.masp

WHERE b.ngaymuahang like '2016-12%'

GROUP BY a.masp, c.tensp

HAVING COUNT(*)>= ALL(SELECT COUNT(*) FROM hoadonchitiet

INNER JOIN hoadon on hoadonchitiet.mahd = hoadon.mahd

WHERE hoadon.ngaymuahang like '2016-12%'

GROUP BY hoadonchitiet.mahd);

SELECT hoadonchitiet.mahd, COUNT(*) FROM hoadonchitiet

INNER JOIN hoadon on hoadonchitiet.mahd = hoadon.mahd

WHERE hoadon.ngaymuahang like '2016-12%'

GROUP BY hoadonchitiet.mahd;

/*c. Hiển thị top 5 khách hàng có tổng số tiền mua hàng nhiều nhất trong năm 2016*/

SELECT khachhang. *, SUM(hoadonchitiet.soluong * sanpham.dongia) as'tong tien' from sanpham

INNER JOIN hoadonchitiet ON sanpham.masp = hoadonchitiet.masp

INNER JOIN hoadon ON hoadon.mahd = hoadonchitiet.mahd

INNER JOIN khachhang ON khachhang.makh = hoadon.makh

WHERE YEAR(hoadon.ngaymuahang) = '2016'

GROUP BY khachhang.makh, khachhang.holot, khachhang.ten, diachi, email, sdt

ORDER BY 'tong tien' desc;

/*d. Hiển thị thông tin các khách hàng sống ở ‘Đà Nẵng’ có mua sản phẩm có tên

“Iphone 7 32GB” trong tháng 12/2016*/

SELECT khachhang. * FROM hoadonchitiet

INNER JOIN sanpham ON hoadonchitiet.masp = sanpham.masp

INNER JOIN hoadon ON hoadon.mahd = hoadonchitiet.mahd

INNER JOIN khachhang ON khachhang.makh = hoadon.mahd

WHERE khachhang.diachi like N'%DA NANG %' and

sanpham.tensp like N'i phone 7 32G' and hoadon.ngaymuahang like'2016-12%';


/*e. Hiển thị tên sản phẩm có lượt đặt mua nhỏ hơn lượt mua trung bình các các sản phẩm.*/

SELECT AVG(soluong) from hoadonchitiet;

SELECT * FROM hoadonchitiet

WHERE soluong < (SELECT AVG (soluong) from hoadonchitiet);

SELECT sanpham.*from sanpham

INNER JOIN hoadonchitiet on sanpham.masp = hoadonchitiet.masp

where hoadonchitiet.soluong < (SELECT AVG(soluong) AS Tbc FROM hoadonchitiet);

/*e>. Hiển thị tên sản phẩm có lượt đặt mua nhỏ hơn lượt mua trung bình các các sản phẩm.

lout mua cac sanpham*/

SELECT sanpham.masp, sanpham.tensp, COUNT(sanpham.masp) as 'SLM' FROM hoadonchitiet

INNER JOIN sanpham ON hoadonchitiet.masp = sanpham.masp

GROUP BY sanpham.masp, sanpham.tensp;

/*.luot mua trung binh cac san pham*/

SELECT AVG (SLM) AS 'so luong mua TB' from (SELECT sanpham.masp, sanpham.tensp,
COUNT(sanpham.masp) as 'SLM' FROM hoadonchitiet

INNER JOIN sanpham ON hoadonchitiet.masp = sanpham.masp

GROUP BY sanpham.masp, sanpham.tensp) AS sanphamtb

You might also like