Xin chào mọi người mình là anonymous-4 :D, Đây là bài tập SQL 02 trong series hướng dẫn làm bài tập SQL của mình. Mình sẽ tiếp tục giải đề thi tuyển lập trình viên môn SQL Sever của FPT FSOFT. Các bạn đã sẵn sàng chưa ? Làm thôi !!! 😀
Bài tập SQL 02
Bài 1. Hệ thống quản lý giao hàng nhanh trên địa bàn thành phố Đà Nẵng cho phép tiếp
nhận đăng ký từ các khách hàng muốn nhờ giao hàng. Các thành viên sẽ tham gia đăng ký
thực hiện giao hàng (shipper). Hệ thống sẽ cho phép thiết lập các đơn giao hàng phù hợp để
tăng thêm thu nhập cho sinh viên muốn làm ngoài giờ và hỗ trợ tối đa nhu cầu chuyển hàng
của khách hàng. Cơ sở dữ liệu được mô tả như sau:
A. Sử dụng SSMS để tạo lập và nhập dữ liệu cho CSDL trên theo đoạn lệnh dưới đây:
B. Chỉ sử dụng 01 lệnh SQL trả lời các yêu cầu sau:
Cập nhật
Câu 1: Xóa những khách hàng có tên là “Le Thi A”.
Câu 2: Cập nhật những khách hàng đang thường trú ở khu vực “Son Tra” thành khu vực “Ngu
Hanh Son”.
Truy Vấn
Câu 3: Liệt kê những thành viên (shipper) có họ tên bắt đầu là ký tự ‘Tr’ và có độ dài ít nhất là
25 ký tự (kể cả ký tự trắng).
Câu 4: Liệt kê những đơn hàng có NgayGiaoHang nằm trong năm 2017 và có khu vực giao
hàng là “Hai Chau”.
Câu 5: Liệt kê MaDonHangGiaoHang, MaThanhVienGiaoHang, TenThanhVienGiaoHang,
NgayGiaoHang, PhuongThucThanhToan của tất cả những đơn hàng có trạng thái là “Da giao
hang”. Kết quả hiển thị được sắp xếp tăng dần theo NgayGiaoHang và giảm dần theo
PhuongThucThanhToan
Câu 6: Liệt kê những thành viên có giới tính là “Nam” và chưa từng được giao hàng lần nào.
Câu 7: Liệt kê họ tên của những khách hàng đang có trong hệ thống. Nếu họ tên trùng nhau
thì chỉ hiển thị 1 lần. Học viên cần thực hiện yêu cầu này bằng 2 cách khác nhau (mỗi cách
được tính 0.5 điểm)
Câu 8: Liệt kê MaKhachHang, TenKhachHang, DiaChiNhanHang, MaDonHangGiaoHang,
PhuongThucThanhToan, TrangThaiGiaoHang của tất cả các khách hàng đang có trong hệ
thống
Câu 9: Liệt kê những thành viên giao hàng có giới tính là “Nu” và từng giao hàng cho 10
khách hàng khác nhau ở khu vực giao hàng là “Hai Chau”
Câu 10: Liệt kê những khách hàng đã từng yêu cầu giao hàng tại khu vực “Lien Chieu” và
chưa từng được một thành viên giao hàng nào có giới tính là “Nam” nhận giao hàng
ĐÁP ÁN:
Câu 1:
DELETE FROM KHACHHANG KH WHERE KH.TenKhachHang = 'Le Thi A'
Câu 2:
UPDATE KHUVUC SET TenKhuVuc = 'NguHanhSon' WHERE TenKhuVuc = 'SonTra'
Câu 3:
SELECT TV.TenThanhVienGiaoHang FROM ThanhVienGiaoHang TV WHERE TV.TenThanhVienGiaoHang like 'Tr%' and LEN(TV.TenThanhVienGiaoHang) > 15
Câu 4:
SELECT * FROM DONHANG_GIAOHANG GH JOIN KHUVUC KV ON DH.MaKhuVuc = KV.MaKhuVuc WHERE DH.NgayGiaoHang = 2017 and kv.TenKhuVuc = 'Hai Chau'
Câu 5:
SELECT MaDonHangGiaoHang, MaThanhVienGiaoHang, TenThanhVienGiaoHang,NgayGiaoHang, PhuongThucThanhToan FROM THANHVIENGIAOHANG TV JOIN DONHANG_GIAOHANG GH ON TV.MaThanhVienGiaoHang = GH.MaThanhVienGiaoHang WHERE GH.TrangThaiGiaoHang = 'Da giao hang' ORDER BY GH.NgayGiaoHang ASC, GH.PhuongThucThanhToan DESC
Câu 6:
SELECT TV.TenThanhVienGiaoHang FROM THANHVIENGIAOHANG TV WHERE NOT EXISTS( SELECT * FROM DONHANG_GIAOHANG GH WHERE TV.MaThanhVienGiaoHang = GH.MaThanhVienGiaoHang)
Câu 7:
//CÁCH 1: SELECT KH.TenKhachHang FROM KHACHHANG KH GROUP BY KH.TenKhachHang //CÁCH 2: SELECT DISTINCT KH.TenKhachHang FROM KHACHHANG KH
Câu 8:
SELECT MaKhachHang, TenKhachHang, DiaChiNhanHang, MaDonHangGiaoHang,PhuongThucThanhToan, TrangThaiGiaoHang FROM DONHANG_GIAOHANG GH JOIN KHACHHANG KH ON KH.MaKhachHang = GH.MaKhachHang
Câu 9:
SELECT TV.MaThanhVienGiaoHang, TV.TenThanhVienGiaoHang FROM THANHVIENGIAOHANG TV WHERE TV.GioiTinh = 'Nu' and TV.MaThanhVienGiaoHang in( SELECT GH.MaThanhVienGiaoHang FROM DONHANG_GIAOHANG GH JOIN KHUVUC KV ON KV.MaKhuVuc = GH.MaKhuVuc WHERE KV.TenKhuVuc = 'Hai Chau' GROUP BY GH.MaThanhVienGiaoHang HAVING COUT(DISTINCT GH.MaKhachHang) > 10)
Câu 10:
SELECT KH.MaKhachHang,KH.TenKhachHang FROM KHACHHANG KH JOIN DONHANG_GIAOHANG GH ON KH.MaKhachHang = GH.MaKhachHang JOIN KHUVUC KV ON KV.MaKhuVuc = GH.MaKhuVuc JOIN THANHVIENGIAOHANG TV ON TV.MaThanhVienGiaoHang = GH.MaThanhVienGiaoHang WHERE KV.TenKhuVuc = 'Lien Chieu' AND NOT TV.GioiTinh='NAM'
Ok xong :(, mình đã làm xong cái Bài tập SQL 02 này. Không khó nhưng hoa hết cả mắt part2. Mình sẽ làm các đề tiếp theo ở bài viết sau. Mình xin được dừng bài viết tại đây.
Xem các bài tập khác tại đây.
Để lại một bình luận