Bài tập truy vấn sql quản lý bán hàng năm 2024

Uploaded by

Duy Nguyen

0% found this document useful [0 votes]

972 views

24 pages

Quản Lý Bán Hàng

Copyright

© © All Rights Reserved

Available Formats

PDF or read online from Scribd

Share this document

Did you find this document useful?

Is this content inappropriate?

0% found this document useful [0 votes]

972 views24 pages

Bài Tập SQL Server Quản Lý Bán Hàng

Uploaded by

Duy Nguyen

Quản Lý Bán Hàng

Jump to Page

You are on page 1of 24

Search inside document

Reward Your Curiosity

Everything you want to read.

Anytime. Anywhere. Any device.

No Commitment. Cancel anytime.

  • 1. SGL By Member: htplasma, Plassma :for Vn-zoom Bài tập tổng hợp SQL –And Đáp án Sử dụng câu lệnh SELECT viết các yêu cầu truy vấn dữ liệu sau đây: 2. 1 Cho biết danh sách các đối tác cung cấp hàng cho công ty. 2. 2 Mã hàng, tên hàng và số lượng của các mặt hàng hiện có trong công ty. 2. 3 Họ tên và điạ chỉ và năm bắt đầu làm việc của các nhân viên trong công ty. 2. 4 địa chỉ và điện thoại của nhà cung cấp có tên giao dch VINAMILK là gì? 2. 5 Cho biết mã và tên của các mặt hàng có giá lớn hơn 100000 và số lượng có ít hn 50. 2. 6 Cho biết mỗi mặt hàng trong công ty do ai cung cấp. 2. 7 Công ty Vit Tin đã cung cp nhng mt hàng nào? 2. 8 Loại hàng thực phẩm do những công ty nào cung cấp và địa chỉ của các công ty đó là gì? 2. 9 Những khách hàng nào [tên giao dịch] đã đặt mua mặt hàng Sữa hộp XYZ của công ty? 2. 10 đơn đặt hàng số 1 do ai đặt và do nhân viên nào lập, thi gian và địa điểm giao hàng là ở đâu? 2. 11 Hãy cho biết số tiền lương mà công ty phải trả cho mỗi nhân viên là bao nhiêu [lương = lương cơ bn + phụ cấp]. 2. 12 Trong đơn đặt hàng số 3 đặt mua nhưng mặt hàng nào và số tiền mà khách hàng phải trả cho mỗi mặt hàng là bao nhiêu [số tiền phải trả cho mõi mặt hang tính theo công thức SOLUONG×GIABAN SOLUONG×GIABAN×MUCGIAMGIA/100] 2. 13 Hãy cho bit có những khách hàng nào lại chính là đối tác cung cấp hàng của công ty [tức là có cùng tên giao dịch]. // thêm 2. 14 Trong công ty có những nhân viên nào có cùng ngày sinh? 2. 15 Những đơn đặt hàng nào yêu cầu giao hàng ngay tại công ty đặt hàng và những đơn đó là của công ty nào? [Q3-3] //2. 16 Cho biết tên công ty, tên giao dch, địa chỉ và điện thoại của các khách hàng và các nhà cung cấp hàng cho công ty. 2. 17 Những mặt hàng nào chưa từng được khách hàng đặt mua?[Q4-3] //2. 18 Những nhân viên nào của công ty chưa từng lập bất kỳ một hoá đơn đặt hàng nào? Tổng hợp SQL - SGL – Plassma :
  • 2. SGL By Member: htplasma, Plassma :for Vn-zoom 2. 19 Những nhân viên nào của công ty có lương cơ bản cao nhất? 2. 20 Tổng số tiền mà khách hàng phải trả cho mỗi đơn đặt hàng là bao nhiêu? 2. 21 Trong nm 2003, những mặt hàng nào chỉ được đặt mua đúng một lần. //2. 22 Hãy cho biết mỗi một khách hàng đã phải bỏ ra bao nhiêu tiền để đặt mua hàng Của công ty? 2. 23 Mỗi một nhân viên của công ty đã lập bao nhiêu đơn đặt hàng [nếu nhân viên chưa hề lập một hoá đơn nào thì cho kết quả là 0] //2. 24 Cho biết tổng số tiền hàng mà cửa hàng thu được trong mỗi tháng của năm 2003 [thời được gian tính theo ngày đặt hàng]. 2. 25 Hãy cho biết tổng số tiền lãi mà công ty thu được từ mỗi mặt hàng trong năm 2003. //2. 26 Hãy cho biết tổng số lượng hàng của mỗi mặt hàng mà công ty đã có [tổng số lương hàng hiện có và đã bán]. //2. 27 Nhân viên nào của công ty bán được số lượng hàng nhiều nhất và số lượng hàng bán được của những nhân viên này là bao nhiêu? 2. 28 đơn đặt hàng nào có số lượng hàng được đặt mua ít nhất? Làm thêm //2. 29 Số tiền nhiều nhất mà mỗi khách hàng đã từng bỏ ra đặt hàng trong các đơn đặt hàng là bao nhiêu? 2. 30 Mỗi một đơn đặt hàng đặt mua những mặt hàng nào và tổng số tiền mà mỗi đơn Đặt hàng phải trả là bao nhiêu? 2. 31 Hãy cho biết mỗi một loại hàng bao gồm những mặt hàng nào, tổng số lượng hàng của mỗi loại và tổng số lượng của tất cả các mặt hàng hiện có trong công ty là bao nhiêu? 2. 32 Thống kê xem trong năm 2003, mỗi một mặt hàng trong mỗi tháng và trong cả năm bán được với số lượng bao nhiêu Yêu cu: Kết quả được hiển thị dưới dạng bảng, hai cột: cột đầu là mã hàng và tên hàng, các cột còn lại tương ứng với các tháng từ 1 đến 12 và cả năm. Như vậy mỗi dòng trong kết quả cho biết số lượng hàng bán được mỗi tháng và trong cả năm của mỗi mặt hàng. Sử dụng câu lệnh UPDATE thực hiện các yêu cầu sau: 2. 33 Cập nhật lại giá trị của trường NGAYCHUYENHANG của những bản ghi có NGAYCHUYENHANG chưa xác định [NULL] trong bảng DONDATHANG Bảng với giá trị của trường NGAYDATHANG. 2. 34 Tăng số luợng hàng của mhững mặt hàng do công ty VINAMILK cung cấp lên gấp đôi. 2. 35 Cập nhật giá trị của trường NOIGIAOHANG trong bảng DONDATHANG bằng địa chỉ của khách hàng đốii với những đơn đặt hàng chưa xác định được nơi giao hàng [giá trị trường NOIGIAOHANG bảng NULL]. 2. 36 Cập nhật lại dữ liệu trong bảng KHACHHANG sao cho nếu tên công ty và tên giao dịch của khách hàng trùng với tên công ty và tên giao dịch của một nhà cung cấp nào đó thì địa chỉ, điện thoại, fax và e-mail phải giống nhau. Tổng hợp SQL - SGL – Plassma :
  • 3. SGL By Member: htplasma, Plassma :for Vn-zoom 2. 37 Tăng lương lên gấp rưỡi cho những nhân viên bán được số lượng hàng nhiều hơn 100 trong năm 2003. 2. 38 Tăng phụ cấp lên bằng 50% lương cho những nhân viên bán được hàng nhiều Nhất. 2. 39 Giảm 25% lương của những nhân viên trong năm 2003 không lập được bất kỳ đơn đặt hàng nào. 2. 40 Giả sử trong bảng DONDATHANG có thêm trường SOTIEN cho biết số tiền mà khách hàng phải trả trong mỗi đơn đặt hàng. Hãy tính giá trị cho trường này. Thực hiện các yêu cầu dưới đây bằng câu lệnh DELETE. 2. 41 Xoá khi bảng NHANVIEN những nhân viên đã làm việc trong công ty quá 40 năm. 2. 42 Xoá những đơn đặt hàng trước năm 2000 ra khỏi cơ sở dữ liệu. 2. 43 Xoá khỏi bảng LOAIHANG những loại hàng hiện không có mặt hàng. 2. 44 Xoá khỏi bảng KHACHHANG những khách hàng hiện không có bất kỳ đơn đặt hàng nào cho công ty. 2. 45 Xoá khỏi bảng MATHANG những mặt hàng có số lượng bằng 0 và khôn được đặt mua trong bất kỳ đơn đặt hàng nào. Lời giải: Các phép nối được sủ dụng trong các truy vấn dưới đây sử dụng cú pháp của SQL2. 2.1 SELECT macongty,tencongty,tengiaodich FROM nhacungcap 2.2 SELECT mahang,tenhang,soluong FROM mathang 2.3 SELECT ho,ten,year[ngaylamviec] AS namlamviec FROM nhanvien 2.4 SELECT diachi,dienthoai FROM nhacungcap WHERE tengiaodich='VINAMILK' 2.5 SELECT mahang,tenhang FROM mathang WHERE giahang>100000 AND soluong=ALL[SELECT sum[soluong] FROM [nhanvien INNER JOIN dondathang ON nhanvien.manhanvien=dondathang.manhanvien] INNER JOIN chitietdathang ON dondathang.sohoadon=chitietdathang.sohoadon GROUP BY nhanvien.manhanvien,ho,ten] 2.28 SELECT dondathang.sohoadon,SUM[soluong] FROM dondathang INNER JOIN chitietdathang ON dondathang.sohoadon=chitietdathang.sohoadon GROUP BY dondathang.sohoadon HAVING sum[soluong]100] 2.38 UPDATE nhanvien SET phucap=luongcoban/2 WHERE manhanvien IN [SELECT manhanvien FROM dondathang INNER JOIN chitietdathang ON dondathang.sohoadon=chitietdathang.sohoadon GROUP BY manhanvien HAVING SUM[soluong]>=ALL [SELECT SUM[soluong] FROM dondathang INNER JOIN chitietdathang ON dondathang.sohoadon=chitietdathang.sohoadon GROUP BY manhanvien]] 2.39 UPDATE nhanvien SET luongcoban=luongcoban*0.85 WHERE NOT EXISTS [SELECT manhanvien FROM dondathang WHERE manhanvien=nhanvien.manhanvien] Tổng hợp SQL - SGL – Plassma :
  • 9. SGL By Member: htplasma, Plassma :for Vn-zoom 2.40 UPDATE dondathang SET sotien = [SELECT SUM[soluong*giaban+soluong*giaban*mucgiamgia] FROM chitietdathang WHERE sohoadon=dondathang.sohoadon GROUP BY sohoadon] 2.41 DELETE FROM nhanvien WHERE DATEDIFF[YY,ngaylamviec,GETDATE[]]>40 2.42 DELETE FROM dondathang WHERE ngaydathang=ngaydathang AND ngaychuyenhang>=ngaydathang] Q3 ALTER TABLE nhanvien ADD CONSTRAINT chk_nhanvien_ngaylamviec CHECK [datediff[yy,ngaysinh,ngaylamviec] BETWEEN 18 AND 60] Q4 Câu lệnh không thực hiện được do bảng cần xoá đang được tham chiếu bởi bảng MATHANG Q5 a. Không. b. Không Q6 a.Có thể cập nhật nhưng không thể xoá b. Có thể được Bài Dụa trên cơ sở dữ liệu bài tập chương 2, thực hiện các yêu cầu sau: 5.1 Tạo thủ tục lưu trữ để thông qua thủ tục này có thể bổ sung thêm một bản ghi mới cho bảng MATHANG [thủ tục phải thực hiện kiểm tra tính hợp lệ cửa dữ liệu cần bổ sung: không trùng khoá chính và đảm bảo toàn vẹn tham chiếu] 5.2 Tạo thủ tục lưu trữ có chức năng thống kê tổng số lượng hàng bán được của một mặt hàng có mã bất kỳ [mã mặt hàng cần thống kê là tham số Tổng hợp SQL - SGL – Plassma :
  • 11. SGL By Member: htplasma, Plassma :for Vn-zoom Của thủ tục]. 5.3 Viết hàm trả về một bảng trong đó cho biết tổng số lượng hàng bán của mỗi mặt hàng. Sử dụng hàm này thống kê xem tổng số lượng hàng [hiện có và đã bán] của mỗi mặt hàng là bao nhiêu. 5.4 Viết trigger cho bảng CHITIETDATHANG theo yêu cầu sau: · Khi một bản ghi mới được bổ sung vào bảng này thì giảm số lượng hàng hiện có nếu số lượng hàng hiện có lớn hơn hoặc bằng số lượng hàng được bán ra. Ngược lại thì huỷ bỏ thao tác bổ sung. · Khi cập nhật lại số lượng hàng đươc bán, kiểm tra số lượng hàng được cập nhật lại có phù hợp hay không [số lượng hàng bán ra không Được vượt quá số lượng hàng hiện có và không được nhỏ hơn 1]. Nếu dữ liệu hợp lệ thì giảm [hoặc tăng] số lượng hàng hiện có trong công ty, ngượ lại thì huỷ bỏ thao tác cập nhật. 5.5 Viết trigger cho bảng CHITIETDATHANG sao cho chỉ chấp nhận giá hàng bán ra phải nhỏ hơn hoặc bằng giá gốc [giá của mặt hàng trong bảng MATHANG] 5.6 quản lý các bản tin trong một Website, người ta sử dụng hai bảng sau: Bảng LOAIBANTIN [loại bản tin] CREATE TABLE loaibantin [ maphanloai INT NOT NULL PRIMARY KEY, tenphanloai NVARCHAR[100] NOT NULL , bantinmoinhat INT DEFAULT[0] ] Bng BANTIN [bn tin] CREATE TABLE bantin [ maso INT NOT NULL PRIMARY KEY, ngayduatin DATETIME NULL , tieude NVARCHAR[200] NULL , noidung NTEXT NULL , maphanloai INT NULL FOREIGN KEY REFERENCES loaibantin[maphanloai] ] Trong bng LOAIBANTIN, giá trị cột BANTINMOINHAT cho biết mã số của bản tin thuộc loại tương ứng mới nhất [dược bổ sung sau cùng]. Hãy viết các trigger cho bảng BANTIN sao cho: · Khi một bản tin mới được bổ sung, cập nhật lại cột BANTINMOINHAT Của dòng tương ứng với loại bản tin vừa bổ sung. · Khi một bản tin bị xoá, cập nhật lại giá trị của cột BANTINMOINHAT trong bảng LOAIBANTIN của dòng ứng với loại bản tin vừa xóa là mã số của bản tin trước đó [dựa vào ngày đưa tin]. Nếu không còn bản tin nào cùng loại thì giá trị của cột này bằng 0. Tổng hợp SQL - SGL – Plassma :
  • 12. SGL By Member: htplasma, Plassma :for Vn-zoom · Khi cập nhật lại mã số của một bản tin và nếu nó là bản tin mới nhất thì cập nhật lại giá trị cột BANTINMOINHAT là mã số mới. Lời giải 5.1 CREATE PROCEDURE sp_insert_mathang[ @mahang NVARCHAR[10], @tenhang NVARCHAR[50], @macongty NVARCHAR[10] = NULL, @maloaihang INT = NULL, @soluong INT = 0, @donvitinh NVARCHAR[20] = NULL, @giahang money = 0] AS IF NOT EXISTS[SELECT mahang FROM mathang WHERE mahang=@mahang] IF [@macongty IS NULL OR EXISTS[SELECT macongty FROM nhacungcap WHERE macongty=@macongty]] AND [@maloaihang IS NULL OR EXISTS[SELECT maloaihang FROM loaihang WHERE maloaihang=@maloaihang]] INSERT INTO mathang VALUES[@mahang,@tenhang, @macongty,@maloaihang, @soluong,@donvitinh,@giahang] 5.2 CREATE PROCEDURE sp_thongkebanhang[@mahang NVARCHAR[10]] AS SELECT mathang.mahang,tenhang, SUM[chitietdathang.soluong] AS tongsoluong FROM mathang LEFT OUTER JOIN chitietdathang ON mathang.mahang=chitietdathang.mahang WHERE mathang.mahang=@mahang GROUP BY mathang.mahang,tenhang 5.3 nh ngha hàm: CREATE FUNCTION func_banhang[] RETURNS TABLE AS RETURN [SELECT mathang.mahang,tenhang, CASE WHEN sum[chitietdathang.soluong] IS NULL THEN 0 ELSE sum[chitietdathang.soluong] END AS tongsl Tổng hợp SQL - SGL – Plassma :
  • 13. SGL By Member: htplasma, Plassma :for Vn-zoom FROM mathang LEFT OUTER JOIN chitietdathang ON mathang.mahang = chitietdathang.mahang GROUP BY mathang.mahang,tenhang] S dng hàm ã nh ngha: SELECT a.mahang,a.tenhang,soluong+tongsl FROM mathang AS a INNER JOIN dbo.func_banhang[] AS b ON a.mahang=b.mahang 5.4 CREATE TRIGGER trg_chitietdathang_insert ON chitietdathang FOR INSERT AS BEGIN DECLARE @mahang NVARCHAR[100] DECLARE @soluongban INT DECLARE @soluongcon INT SELECT @mahang=mahang,@soluongban=soluong FROM inserted SELECT @soluongcon=soluong FROM mathang WHERE mahang=@mahang IF @soluongcon>=@soluongban UPDATE mathang SET soluong=soluong-@soluongban WHERE mahang=@mahang ELSE ROLLBACK TRANSACTION END CREATE TRIGGER trg_chitietdathang_update_soluong ON chitietdathang FOR UPDATE AS IF UPDATE[soluong] BEGIN IF EXISTS[SELECT sohoadon FROM inserted WHERE soluong

Chủ Đề