You are on page 1of 2

Trường ĐH HUFLIT-Khoa CNTT Môn Cơ sở dữ liệu nâng cao

BÀI TẬP THỰC HÀNH BUỔI 05



Cho CSDL sau:

Mã Hóa Đơn Ngày Mã KH Mã NV Tổng tiền Trạng thái


HD01 26-9-2022 KH01 NV01 10.000 Đã giao
HD02 20-9-2022 KH02 NV01 5.000 Chưa giao
HD03 15-9-2022 KH03 NV01 4.000 Đã giao
HD04 10-9-2022 KH01 NV02 15.000 Chưa giao
HD05 5-9-2022 KH02 NV02 2.000 Đã giao

Mã KH Họ tên KH Mã NV Họ Tên NV Hệ số TT
KH01 Nguyễn An NV01 Lý Thúy 0.25
KH02 Lê Bình NV02 Minh Hoa 0.35
KH03 Đào Tú

Yêu cầu : Viết mã nguồn SQL thực hiện các yêu cầu sau.

1. Đặt biến để lưu các thông tin khách hàng như sau.
1.1. Biến @makh để lưu Mã khách hàng của khách hàng tên là Nguyễn An.
1.2. Biến @hd11 để lưu thông tin mã hóa đơn của khách hàng có mã là @makh mua hàng ngày 26/9 /2022
1.3. Biến @tt11 để lưu thông tin tổng tiền của khách hàng có mã là @makh mua hàng ngày 26/9 /2022
1.4. Biến @hd12 để lưu thông tin mã hóa đơn của khách hàng có mã là @makh mua hàng ngày 10/9 /2022
1.5. Biến @tt12 để lưu thông tin tổng tiền của khách hàng có mã là @makh mua hàng ngày 10/9 /2022
1.6. Tính tổng số tiền của hàng của khách hàng có mã khách hàng là @makh và lưu vào biến @tongtienMH.
1.7. Nếu tổng tiền mua hàng của khách hàng @makh trên 8000 thì lưu trạng thái khách hàng là ‘VIP’ vào biến @lk
ngược lại thì nhận giá trị ‘BT’ .
1.8. Tạo cột Loại Khách hàng trong bảng lưu thông tin khách hàng và cập nhật lại loại khách hàng đã lưu trong
biến @lk cho khách hàng có mã lưu trong biến @makh .
1.9. Tạo biến @soVC để lưu số lượng voucher mà khách hàng sẽ được nhận.

Kiểm tra nếu ngày mua hàng của khách hàng từ ngày 9/9/2022 đến ngày 20/9/2022 thì khách hàng sẽ nhận được 1
voucher giảm giá 100.

1.10. Tạo biến @nmh11 để lưu ngày mua hàng của khách hàng @makh với mã hóa đơn là @hd11.
1.11. Tạo biến @nmh12 để lưu ngày mua hàng của khách hàng @makh với mã hóa đơn là @hd12.
1.12. Kiểm tra xem với quy định hiện tại thì khách hàng @makh nhận được bao nhiêu voucher dựa trên biến
@nmh11 và @nmh12 sau đó lưu kết quả vào biến @soVC.
1.13. Tạo cột Số Voucher kế bên cột Loại khách hàng và cập nhật số voucher cho khách hàng có mã @makh với
số lượng voucher lưu trong biến @soVC. Lưu ý rằng mỗi khách hàng chỉ có tối đa 5 voucher.
1.14. Tạo cột số Tiền Voucher kế bên cột Số Voucher và cập nhật số tiền giảm giá cho khách hàng có mã @makh.
Lưu ý rằng : nếu Loại KH là ‘VIP’ thì giá trị voucher tăng 50%.
1.15. Đặt biến tương tự và cập nhật thông tin Loại Khách hàng, Số Voucher, Tiền Voucher cho những khách hàng
còn lại.
2. Đặt biến để lưu các thông tin nhân viên như sau.
2.1. Đặt biến @manv để lưu mã của nhân viên là ‘NV01’.
2.2. Đặt biến @ttb để lưu thông tin tổng số tiền bán hàng của nhân viên có mã là @manv. Lưu ý chỉ tính những đơn
hàng Đã Giao.
2.3. Đặt biến @dgh để lưu số lượng đơn hàng đã giao của nhân viên có mã là @manv.
2.4. Thêm Cột Lương kết bên cột Hệ số TT trong bảng thông tin nhân viên, tính lương nhân viên có mã là @manv
bằng công thức:
- Nếu @ttb < 15000 và @dgh <= 2 thì Lương = @ttb * Hệ số TT.
- Nếu @ttb >= 15000 và @dgh < 2 thì Lương = @ttb * Hệ số TT+300.
Trường ĐH HUFLIT-Khoa CNTT Môn Cơ sở dữ liệu nâng cao

- Nếu @ttb >= 15000 và @dgh > 2 thì Lương = @ttb * Hệ số TT+500.
2.5. Đặt biến @SoVCB để lưu thông tin về số voucher mà nhân viên @manv đã trao cho khách hàng biết rằng cứ mỗi
hóa đơn bán trong thời gian từ ngày 9/9/2022 đến ngày 20/9/2022 thì nhân viên sẽ trao 1 voucher cho khách hàng.
2.6. Kiểm tra @SoVCB nếu nhỏ hơn hoặc bằng 30 thì giữ nguyên còn lớn hơn thì gán lại bằng 30.
2.7. Đặt biến @SHDVC lưu số hóa đơn mà nhân viên @manv bán từ ngày 9/9/2022 đến ngày 20/9/2022.
2.8. Dựa vào biến @SHDVC và @SoVCB để kiểm tra nếu nhân viên @manv có bán hàng từ ngày 9/9/2022 đến ngày
20/9/2022 và đã phát từ 2 voucher trở lên thì lưu biến @ChiTieu là “Hoàn thành chỉ tiêu”.
2.9. Tạo cột Chỉ tiêu bên cạnh cột lương và cập nhật chỉ tiêu cho nhân viên có mã là @manv.
2.10. Tạo cột Thưởng bên cạnh cột Chỉ tiêu và cập nhật cột thưởng cho nhân viên @manv như sau:
- Nếu nhân viên “Hoàn thành chỉ tiêu” và Lương <=1000, thì thưởng bằng 10% lương.
- Nếu nhân viên “Hoàn thành chỉ tiêu” và Lương >=1000, thì thưởng bằng 15% lương.
- Nếu nhân viên không hoàn thành chỉ tiêu thì không có thưởng.
2.11. Đặt biến tương tự để cập nhật thông tin cho nhân viên NV02.
3. Lập bảng tổng hợp doanh thu cho chi nhánh như sau:

Chi nhánh Số nhân viên Số hóa đơn Số Khách hàng Tổng tiền hóa đơn
Chi nhánh HocMon

3.1. Tạo biến @SoNVCN lưu số nhân viên của chi nhánh HocMon biết rằng số nhân viên được đếm từ bảng thông
tin nhân viên.
3.2. Tạo biến @SoHDCN lưu số hóa đơn bán được của chi nhánh HocMon biết rằng số hóa đơn được đếm từ bảng
thông tin hóa đơn
3.3. Tạo biến @TTHDCN lưu tổng số tiền mà chi nhánh HocMon thu được từ các hóa đơn.
3.4. Tạo biến @SoKHCN lưu tổng số khách hàng của chi nhánh HocMon biết rằng số khách hàng được đếm từ bảng
thông tin khách hàng.
3.5. Cập nhật các thông tin cho bảng tổng hợp doanh thu chi nhánh HocMon từ các biến @SoNVCN, @SoHDCN,
@TTHDCN, @SoKHCN.
3.6. Thêm vào cột Trạng thái chi nhánh kế bên cột Tổng tiền hóa đơn trong bảng tổng hợp.
3.7. Cập nhật thông tin cho cột trạng thái chi nhánh HocMon như sau:
- Nếu số nhân viên < 5 và số khách hàng >2 và Tổng tiền hóa đơn trên 20000 thì Trạng thái là ‘Đạt’.
- Ngược lại thì cập nhật trạng thái là ‘Chưa Đạt’.

You might also like