You are on page 1of 11

create database Quanlybansach

use Quanlybansach

--1. In ra danh sách các sách chỉ lấy (MaSach,TenSach) do Nhà xuất bản Giáo Dục xuất bản.

select MaSach as'Mã sách', TenSach as 'Tên sách'

from tSach inner join tNhaXuatBan on tSach.MaNXB=tNhaXuatBan.MaNXB

where TenNXB=N'NXB Giáo Dục'

--2In ra danh sách các sách có tên bắt đầu là “Ngày”.

select MaSach as'Mã sách', TenSach as'Tên sách'

from tSach

where TenSach like N'Ngày %'

--3In ra danh sách các sách (MaSach,TenSach) do Nhà xuất bản Giáo Dục có giá từ 100.000 đến 150.000.

select MaSach as'Mã sách', TenSach as'Tên sách', DonGiaBan as 'Đơn giá bán'

from tSach inner join tNhaXuatBan on tSach.MaNXB=tNhaXuatBan.MaNXB

where (tSach.DonGiaBan between 100000 and 150000)and TenNXB=N'NXB Giáo Dục'

--4.In ra danh sách các các sách (MaSach,TenSach) do Nhà xuất bản Giáo Dục hoặc NhàXuất Bản Trẻ sản
xuất có giá từ 90.000 đến 140.000.

select MaSach as'Mã sách', TenSach as'Tên sách', DonGiaBan as 'Đơn giá bán'

from tSach inner join tNhaXuatBan on tSach.MaNXB=tNhaXuatBan.MaNXB

where (tSach.DonGiaBan between 90000 and 140000)and (TenNXB=N'NXB Giáo Dục' or TenNXB=N'NXB
Trẻ')

-- 5In ra các số hóa đơn, trị giá hóa đơn bán ra trong ngày 1/1/2014 và ngày 31/12/2014.--

select tHoaDonBan.SoHDB, 'Trị giá hóa đơn '= Sum(SLBan*DonGiaBan)

from tHoaDonBan inner join tChiTietHDB on tHoaDonBan.SoHDB=tChiTietHDB.SoHDB inner join tSach


on tChiTietHDB.MaSach=tSach.MaSach

where NgayBan= '2014-1-1' or NgayBan='2014-12-31'

group by tHoaDonBan.SoHDB

6.In ra các số hóa đơn, trị giá hóa đơn trong tháng 4/2014, sắp xếp theo ngày (tăng dần) và

trị giá của hóa đơn (giảm dần).

select tHoaDonBan.SoHDB,tHoaDonBan.NgayBan, 'Trị giá' = sum(tChiTietHDB.SLBan*DonGiaBan)


from tHoaDonBan join tChiTietHDB on tHoaDonBan.SoHDB=tChiTietHDB.SoHDB join tSach on
tChiTietHDB.MaSach=tSach.MaSach

where year(NgayBan)=2014 and month(NgayBan)=4

group by tHoaDonBan.SoHDB,tHoaDonBan.NgayBan

order by NgayBan asc, sum(SLBan*DonGiaBan) desc

7. In ra danh sách các khách hàng (MaKH, TenKH) đã mua hàng trong ngày 10/4/2014.

select tKhachHang.MaKH , TenKH

from tKhachHang inner join tHoaDonBan on tKhachHang.MaKH=tHoaDonBan.MaKH

where NgayBan= '10/4/2014'

8.In ra số hóa đơn, trị giá các hóa đơn do nhân viên có tên “Trần Huy” lập trong ngày “11/8/2014”

select tHoaDonBan.SoHDB, 'Trị giá hóa đơn'=(SoLuong*DonGiaBan), tenNV, NgayBan

from tSach join tChiTietHDB on tSach.MaSach=tChiTietHDB.MaSach join tHoaDonBan on


tChiTietHDB.SoHDB=tHoaDonBan.SoHDB join tNhanVien on tHoaDonBan.MaNV=tNhanVien.MaNV

where TenNV=N'Trần Huy' and NgayBan='11/8/2014'

9In ra danh sách các sách (MaSach,TenSach) được khách hàng có tên “Nguyễn Đình Sơn” mua trong
tháng 8/2014.

select tSach.MaSach, TenSach , TenKH

from tSach inner join tChiTietHDB on tSach.MaSach= tChiTietHDB.MaSach inner join tHoaDonBan on
tChiTietHDB.SoHDB=tHoaDonBan.SoHDB inner join tKhachHang on
tHoaDonBan.MaKH=tKhachHang.MaKH

where (TenKH='Nguyễn Đình Sơn') and ( Month(NgayBan)= '8' and year(NgayBan)='2014')

10 Tìm các số hóa đơn đã mua sách “Cấu trúc dữ liệu và giải thuật”

select tHoaDonBan.SoHDB, TenSach

from tHoaDonBan inner join tChiTietHDB on tHoaDonBan.SoHDB=tChiTietHDB.SoHDB inner join tSach


on tChiTietHDB.MaSach=tSach.MaSach

where TenSach= N'Cấu trúc dữ liệu và giải thuật'

11Tìm các số hóa đơn đã mua sản phẩm có mã số “S01” hoặc “S02”, mỗi sản phẩm mua với số lượng từ
10 đến 20.

select tChiTietHDB.SoHDB, tSach.MaSach, SoLuong

from tChiTietHDB inner join tSach on tChiTietHDB.MaSach=tSach.MaSach

where (tSach.MaSach= N'S01' or tSach.MaSach= N'S02') and (SoLuong between 10 and 20)
12. Tìm các số hóa đơn mua cùng lúc 2 sản phẩm có mã số “S10” và “S11”, mỗi sản phẩm mua với số
lượng từ 5 đến 10.

select SoHDB

from tChiTietHDB

where MaSach= 'S01' or MaSach= 'S02' and (SLBan >=5 and SLBan<= 10)

group by SoHDB

Having count(SoHDB)=2

--c2:

select SoHDB

from tChiTietHDB

where MaSach='S10' and SLBan Between 5 and 10

and SoHDB in (select SoHDB

from tChiTietHDB

where MaSach='S11' and SLBan Between 5 and 10)

13. In ra danh sách các sách không bán được.

select TenSach, tSach.MaSach

from tSach

where MaSach not in (select distinct MaSach from tChiTietHDB)

14. In ra danh sách các sách không bán được trong năm 2014.

--having: điều kiện hàm gộp

select TenSach, tSach.MaSach

from tSach

where MaSach not in (

select distinct MaSach

from tChiTietHDB join tHoaDonBan on tChiTietHDB.SoHDB=tHoaDonBan.SoHDB

where year(tHoaDonBan.NgayBan)=2014)

15. In ra danh sách các sách của NXB Giáo Dục không bán được trong năm 2014.

select TenSach, tSach.MaSach ,TenNXB


from tSach inner join tNhaXuatBan on tSach.MaNXB=tNhaXuatBan.MaNXB

where (TenNXB=N'NXB Giáo Dục' ) and MaSach not in (

select distinct MaSach

from tChiTietHDB join tHoaDonBan on tChiTietHDB.SoHDB=tHoaDonBan.SoHDB

where year(tHoaDonBan.NgayBan)=2014)

16. Tìm số hóa đơn đã mua tất cả các sách cảu NXB Giao dục

select SoHDB, count (tChiTietHDB.MaSach) as SL

from tChiTietHDB inner join tSach on tChiTietHDB.MaSach=tSach.MaSach inner join tNhaXuatBan on


tSach.MaNXB=tNhaXuatBan.MaNXB

where TenNXB=N'NXB Giáo Dục'

group by SoHDB

Having count (tChiTietHDB.MaSach) = (select count(MaSach) from tSach inner join tNhaXuatBan on
tSach.MaNXB=tNhaXuatBan.MaNXB

where tNhaXuatBan.TenNXB=N'NXB Giáo Dục')

17.Có bao nhiêu đầu sách khác nhau đc bán ra trong năm 2014

select count(distinct MaSach )

from tHoaDonBan join tChiTietHDB on tHoaDonBan.SoHDB=tChiTietHDB.SoHDB

where year(NgayBan) = '2014'

18. CHo biết giá trị hóa đơn cao nhất, thấp nhất là bao nhiêu

select Max(TriGia) as MaxTriGia, Min(TriGia) as MinTriGia

from

(select SoHDB, sum(SLBan*DonGiaBan) as TriGia

from tSach s inner join tChiTietHDB ct on s.MaSach=ct.MaSach

group by SoHDB) BangPhu

19.Trị giá trung bình của tất cả các hóa đơn được bán ra trong năm 2014 là bao nhiêu
select avg(TriGia) as AVGTriGia

from(

select ct.SoHDB, sum(SLBan*DonGiaBan) as TriGia

from tSach s inner join tChiTietHDB ct on s.MaSach=ct.MaSach inner join tHoaDonBan on


ct.SoHDB=tHoaDonBan.SoHDB

where year(NgayBan)='2014'

group by ct.SoHDB) Bangphu

cách 2:

select

20

select distinct sum(SLban*DonGiaBan) as 'Tổng hóa đơn'

from tHoaDonBan inner join tChiTietHDB on tHoaDonBan.SoHDB=tChiTietHDB.SoHDB inner join tSach


on tSach.MaSach=tChiTietHDB.MaSach

where year(NgayBan)=2014

21.tìm số hóa đơn có giá trị cao nhất

select Top 1 tHoaDonBan.SoHDB

from tHoaDonBan join tChiTietHDB on tHoaDonBan.SoHDB=tChiTietHDB.SoHDB join tSach on


tSach.MaSach=tChiTietHDB.MaSach

where year(NgayBan)=2014

group by tHoaDonBan.SoHDB

order by sum(SLban*DonGiaBan) desc

22.tìm họ tên khách hàng đã mua hóa đơn có giá trị cao nhất

select Top 1 TenKH

from tKhachHang join tHoaDonBan on tKhachHang.MaKH=tHoaDonBan.MaKH inner join tChiTietHDB


on tHoaDonBan.SoHDB=tChiTietHDB.SoHDB join tSach on tSach.MaSach=tChiTietHDB.MaSach

where year(NgayBan)=2014

group by TenKH

order by sum(SLban*DonGiaBan) desc

23.In danh sách 3 khách hàng có doanh số cao nhất


select Top 3 TenKH

from tKhachHang join tHoaDonBan on tKhachHang.MaKH=tHoaDonBan.MaKH inner join tChiTietHDB


on tHoaDonBan.SoHDB=tChiTietHDB.SoHDB join tSach on tSach.MaSach=tChiTietHDB.MaSach

where year(NgayBan)=2014

group by TenKH

order by sum(SLban*DonGiaBan) desc

24.In ra các sách có giá bán bằng 1 trong 3 mức giá cao nhất

select MaSach, TenSach, DonGiaBan

from tSach

where DonGiaBan in (

select distinct Top 3 DonGiaBan

from tSach

order by DonGiaBan DEsc)

25.In ra danh sách do NXB giáo dục sản xuất có giá bằng 1 trong 3 mức giá cao nhất

select MaSach, TenSach, DonGiaBan

from tSach inner join tNhaXuatBan on tSach.MaNXB=tNhaXuatBan.MaNXB

where TenNXB=N'NXB Giáo Dục' and DonGiaBan in (

select distinct Top 3 DonGiaBan

from tSach

order by DonGiaBan DEsc)

26.Tính tông sô đầu sách do NXB Giáo dục xuất bản

select count(*)

from tSach inner join tNhaXuatBan on tSach.MaNXB=tNhaXuatBan.MaNXB

where TenNXB=N'NXB Giáo Dục'

27.tính tổng số sách của từng NXB

select TenNXB, count(*) as 'Số lượng'

from tSach inner join tNhaXuatBan on tSach.MaNXB=tNhaXuatBan.MaNXB

group by TenNXB

where TenNXB=N'NXB Giáo Dục'


28.Với từng NXB tìm giá bán cao nhất, thấp nhất, trung bình của các sản phẩm

select tNhaXuatBan.MaNXB, TenNXB , max(DonGiaBan) , avg(DonGiaBan), min(DonGiaban)

from tNhaXuatBan join tSach on tNhaXuatBan.MaNXB=tSach.MaNXB

group by tNhaXuatBan.MaNXB, TenNXB

29.tính doanh thu bán hàng mỗi ngày

select NgayBan, sum(SLBan*DonGiaBan) as'Doanh thu 1 ngày'

from tHoaDonBan inner join tChiTietHDB on tHoaDonBan.SoHDB=tChiTietHDB.SoHDB inner join tSach


on tSach.MaSach=tChiTietHDB.MaSach

group by NgayBan

30.Tính tổng số lượng của từng sách bán ra trong 10/2014

select tSach.MaSach, TenSach, sum(SLBan)

from tHoaDonBan inner join tChiTietHDB on tHoaDonBan.SoHDB=tChiTietHDB.SoHDB inner join tSach


on tSach.MaSach=tChiTietHDB.MaSach

where MONTH(NgayBan)=10 and YEAR(NgayBan)=2014

group by tSach.MaSach, TenSach

31.

select distinct MONTH(NgayBan)

from tHoaDonBan

c1

select month(NgayBan),

isnull(sum(tSach.DonGiaBan*SLBan),0) as'Doanh thu'

from tHoaDonBan inner join tChiTietHDB on tHoaDonBan.SoHDB=tChiTietHDB.SoHDB inner join tSach


on tSach.MaSach=tChiTietHDB.MaSach

where year(NgayBan)=2014

group by month(NgayBan)

c2:

select Month.month As Thang,

coalesce(sum(tChiTietHDB.SLBan*tSach.DonGiaBan),0) as 'Doanh thu'

from

(Select 1 as month
union select 2

union select 3

union select 4

union select 5

union select 6

union select 7

union select 8

union select 9

union select 10

union select 11

union select 12

) as Month

left join(tHoaDonBan hd join tChiTietHDB on hd.SoHDB=tChiTietHDB.SoHDB join tSach on


tSach.MaSach=tChiTietHDB.MaSach)

on MONTH(hd.NgayBan) = Month .month

and year(NgayBan)=2014

group by Month.month

32.Tìm hóa đơn có mua ít nhất 4 sản phẩm khác nhau.sora, emo

select SoHDB

from tChiTietHDB

group by SOHDB

having count(distinct MaSach)>=4

33.Tìm hóa đơn có mua 3 sách,

select tHoaDonBan.SoHDB

from tHoaDonBan inner join tChiTietHDB on tHoaDonBan.SoHDB=tChiTietHDB.SoHDB inner join tSach


on tSach.MaSach=tChiTietHDB.MaSach inner join tNhaXuatBan on tSach.MaNXB=tNhaXuatBan.MaNXB

where TenNXB=N'NXB Giáo Dục'

group by tHoaDonBan.SoHDB
having count(distinct tSach.MaSach)>=3

34.Tìm khách hàng có số lần mua hàng nhiều nhất

select Top 1 tKhachHang.MaKH, TenKH, count(tHoaDonBan.SoHDB) AS 'SỐ lượng mua'

from tKhachHang inner join tHoaDonBan on tKhachHang.MaKH=tHoaDonBan.MaKH

group by tKhachHang.MaKH, TenKH

order by count(tHoaDonBan.SoHDB) asc

35.

select Top 1 month(NgayBan) as Thang, sum(tSach.DonGiaBan *tChiTietHDB.SLBan) as 'doanh so'

from tHoaDonBan inner join tChiTietHDB on tHoaDonBan.SoHDB=tChiTietHDB.SoHDB inner join tSach


on tSach.MaSach=tChiTietHDB.MaSach

where year(NgayBan)=2014

group by Month(NgayBan)

order by sum(tSach.DonGiaBan *tChiTietHDB.SLBan) desc

38.

update tSach

set DonGiaBan = DonGiaBan*0.9

where MaNXB = (select MaNXB from tNhaXuatBan where TenNXB=N'NXB Giáo Dục')

39. Thêm trưởng tổng tiền cho bảng tHoaDonBan rồi cập nhật tổng tiền của hóa đơn cho

trường này.

alter table tHoaDonBan add TongTien decimal(15,2)

update tHoaDonBan

set TongTien=(

select sum(DonGiaBan*SLBan)

from tChiTietsHDB

where tChiTietHDB.SoHDB=tHoaDonBan.SoHDB)

40. Giảm 10% trên tổng hóa đơn cho các hóa đơn có trị giá trên 500.000 trong tháng 9/2014

update tHoaDonBan

set TongTien = TongTien*0.9

where SoHDB in(


select SoHDB

from tHoaDonBan

where month(NgayBan)=9 and year(NgayBan0=2014)

add TongTien>500000;

41. Tính tổng số lượng sách nhập trong năm 2014

select sum(SLNhap) as Tongsoluongnhap

from tChiTietHDN join tHoaDonNhap on tChiTietHDN.SoHDN=tHoaDonNhap.SoHDN

where year(NgayNhap)=2014;

42. Tính tổng số lượng sách bán trong năm 2014

select sum(SLBan) as Tongsoluongban

from tChiTietHDB join tHoaDonBan on tChiTietHDB.SoHDB=tHoaDonBan.SoHDB

where year(NgayBan)=2014;

43. Tính tổng tiền đã nhập trong năm 2014

select sum(DonGiaNhap*SLNhap) as tongtiennhap

from tChiTietHDN join tHoaDonNhap on tChiTietHDN.SoHDN=tHoaDonNhap.SoHDN join tSach on


tChiTietHDN.MaSach=tSach.MaSach

where year(NgayNhap)=2014

44. Xóa những hóa đơn do nhân viên "Trần Huy" lập (lưu ý xóa chi tiết hóa đơn trước)

#xóa chitiet hoa don nhap

delete from tChiTietHDN

where SoHDN in(

select SoHDN

from tHoaDonNhap join tNhanVien on tHoaDonNhap.MaNV=tNhanVien.MaNV

where TenNV=N'Trần Huy')

#xóa chi tiết hóa đon bánde

delete from tChitietHDB

where SoHDB in(

select SoHDB
from tHoaDonBan join tNhanVien on tHoaDonBan.MaNV=tNhanVien.MaNV

where TenNV=N'Trần Huy')

45. Đổi tên "NXB Thăng Long" thành "NXB Văn học

update tNhaXuatBan

set TenNXB=N'NXB Văn học'

where TenNXB=N'NXB Thăng Long'

46 Đưa ra thông tin toàn bộ sách, nếu sách được bán trong năm 2014 thì đưa ra SL bán

select MaSach, TenSach, TacGia,MaTheLoai, MaNXB, NgayBan

from tSach

where year(NgayBan)=2014

group by MaSach, TenSach, TacGia,MaTheLoai, MaNXB, NgayBan

You might also like