BÀI TẬP SQL SERVER VÀ LỜI GIẢI
QUẢN LÝ BÁN HÀNG
Bài tập 1:
Cơ sở dữ liệu quản lý bán hàng gồm có các quan hệ sau:
KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK)
Tân từ: Quan hệ khách hàng sẽ lưu trữ thông tin của khách hàng thành viên gồm có các thuộc tính:
mã khách hàng, họ tên, địa chỉ, số điện thoại, ngày sinh, ngày đăng ký và doanh số (tổng trị giá các
hóa đơn của khách hàng thành viên này).
NHANVIEN (MANV,HOTEN, NGVL, SODT)
Tân từ: Mỗi nhân viên bán hàng cần ghi nhận họ tên, ngày vào làm, điện thọai liên lạc, mỗi nhân viên
phân biệt với nhau bằng mã nhân viên.
SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA)
Tân từ: Mỗi sản phẩm có một mã số, một tên gọi, đơn vị tính, nước sản xuất và một giá bán.
HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA)
Tân từ: Khi mua hàng, mỗi khách hàng sẽ nhận một hóa đơn tính tiền, trong đó sẽ có số hóa đơn,
ngày mua, nhân viên nào bán hàng, trị giá của hóa đơn là bao nhiêu và mã số của khách hàng nếu là
khách hàng thành viên.
CTHD (SOHD,MASP,SL)
Tân từ: Diễn giải chi tiết trong mỗi hóa đơn gồm có những sản phẩm gì với số lượng là bao nhiêu.
(sơ đồ thể hiện mối quan hệ giữa các bảng)
NHANVIEN
MANV
HOTEN
DTHOAI
NGVL
NV01
Nguyen Nhu Nhut
0927345678
13/4/2006
NV02
Le Thi Phi Yen
0987567390
21/4/2006
NV03
Nguyen Van B
0997047382
27/4/2006
NV04
Ngo Thanh Tuan
0913758498
24/6/2006
NV05
Nguyen Thi Truc Thanh
0918590387
20/7/2006
KHACHHANG
MAKH
HOTEN
DCHI
SODT
NGSINH
DOANHSO
NGDK
KH01
Nguyen Van A
731 Tran Hung Dao, Q5, TpHCM
08823451
22/10/1960 13,060,000 22/07/2006
KH02
Tran Ngoc Han
23/5 Nguyen Trai, Q5, TpHCM
0908256478
3/4/1974
280,000 30/07/2006
KH03
Tran Ngoc Linh
45 Nguyen Canh Chan, Q1, TpHCM 0938776266
12/6/1980
3,860,000 05/08/2006
KH04
Tran Minh Long
50/34 Le Dai Hanh, Q10, TpHCM
0917325476
9/3/1965
250,000 02/10/2006
KH05
Le Nhat Minh
34 Truong Dinh, Q3, TpHCM
08246108
10/3/1950
21,000 28/10/2006
KH06
Le Hoai Thuong
227 Nguyen Van Cu, Q5, TpHCM
08631738
31/12/1981
915,000 24/11/2006
KH07
Nguyen Van Tam
32/3 Tran Binh Trong, Q5, TpHCM
0916783565
6/4/1971
12,500 01/12/2006
KH08
Phan Thi Thanh
45/2 An Duong Vuong, Q5, TpHCM
0938435756
10/1/1971
365,000 13/12/2006
KH09
Le Ha Vinh
873 Le Hong Phong, Q5, TpHCM
08654763
3/9/1979
70,000 14/01/2007
KH10
Ha Duy Lap
34/34B Nguyen Trai, Q1, TpHCM
08768904
2/5/1983
67,500 16/01/2007
SANPHAM
HOADON
MASP
BC01
TENSP
DVT
But chi
cay
NUOCSX
Singapore
GIA
SOHD
NGHD
MAKH MANV
TRIGIA
3,000
1001
23/07/2006 KH01
NV01
320,000
12/08/2006 KH01
NV02
840,000
BC02
But chi
cay
Singapore
5,000
1002
BC03
But chi
cay
Viet Nam
3,500
1003
23/08/2006 KH02
NV01
100,000
01/09/2006 KH02
NV01
180,000
BC04
But chi
hop
Viet Nam
30,000
1004
BB01
But bi
cay
Viet Nam
5,000
1005
20/10/2006 KH01
NV02
3,800,000
7,000
1006
16/10/2006 KH01
NV03
2,430,000
100,000
1007
28/10/2006 KH03
NV03
510,000
28/10/2006 KH01
NV03
440,000
BB02
But bi
cay
Trung Quoc
BB03
But bi
hop
Thai Lan
TV01
Tap 100 giay mong
quyen
Trung Quoc
2,500
1008
TV02
Tap 200 giay mong
quyen
Trung Quoc
4,500
1009
28/10/2006 KH03
NV04
200,000
TV03
Tap 100 giay tot
quyen
Viet Nam
3,000
1010
01/11/2006 KH01
NV01
5,200,000
TV04
Tap 200 giay tot
quyen
Viet Nam
5,500
1011
04/11/2006 KH04
NV03
250,000
TV05
Tap 100 trang
chuc
Viet Nam
23,000
1012
30/11/2006 KH05
NV03
21,000
TV06
Tap 200 trang
chuc
Viet Nam
53,000
1013
12/12/2006 KH06
NV01
5,000
TV07
Tap 100 trang
chuc
Trung Quoc
34,000
1014
31/12/2006 KH03
NV02
3,150,000
ST01
So tay 500 trang
quyen
Trung Quoc
40,000
1015
01/01/2007 KH06
NV01
910,000
ST02
So tay loai 1
quyen
Viet Nam
55,000
1016
01/01/2007 KH07
NV02
12,500
02/01/2007 KH08
NV03
35,000
ST03
So tay loai 2
quyen
Viet Nam
51,000
1017
ST04
So tay
quyen
Thai Lan
55,000
1018
13/01/2007 KH08
NV03
330,000
13/01/2007 KH01
NV03
30,000
ST05
So tay mong
quyen
Thai Lan
20,000
1019
ST06
Phan viet bang
hop
Viet Nam
5,000
1020
14/01/2007 KH09
NV04
70,000
16/01/2007 KH10
NV03
67,500
ST07
Phan khong bui
hop
Viet Nam
7,000
1021
ST08
Bong bang
cai
Viet Nam
1,000
1022
16/01/2007 Null
NV03
7,000
ST09
But long
cay
Viet Nam
5,000
1023
17/01/2007 Null
NV01
330,000
ST10
But long
cay
Trung Quoc
7,000
MASP
BB01
BB02
BB03
TV01
TV02
TV03
TV04
ST04
ST05
ST06
ST07
ST08
TV01
TV02
ST07
SL
50
30
7
5
1
1
5
6
1
2
10
5
7
10
1
CTHD
SOHD
1001
1001
1001
1001
1001
1002
1002
1002
1003
1004
1004
1004
1004
1005
1005
1006
MASP
TV02
ST01
BC01
BC02
ST08
BC04
BB01
BB02
BB03
TV01
TV02
TV03
TV04
TV05
TV06
TV07
CTHD
SL
10
5
5
10
10
20
20
20
10
20
10
10
10
50
50
20
SOHD
1006
1006
1007
1008
1009
1010
1010
1010
1010
1010
1011
1012
1013
1014
1014
1014
MASP
ST01
ST02
ST03
ST04
ST05
TV07
ST07
ST08
ST04
TV03
ST06
ST07
ST08
BC02
BB02
BC04
CTHD
SL
30
10
10
8
10
50
50
100
50
100
50
3
5
80
100
60
SOHD
1014
1015
1015
1016
1017
1017
1017
1018
1019
1019
1020
1021
1021
1021
1022
1023
ST04
6
BẢNG THUỘC TÍNH
Quan hệ
Thuộc tính
Diễn giải
Kiểu dữ liệu
MAKH
HOTEN
DCHI
SODT
NGSINH
NGDK
DOANHSO
Mã khách hàng
Họ tên
Địa chỉ
Số điện thọai
Ngày sinh
Ngày đăng ký thành viên
Tổng trị giá các hóa đơn khách hàng đã mua
char(4)
varchar(40)
varchar(50)
varchar(20)
smalldatetime
smalldatetime
money
NHANVIEN
MANV
HOTEN
SODT
NGVL
Mã nhân viên
Họ tên
Số điện thoại
Ngày vào làm
char(4)
varchar(40)
varchar(20)
smalldatetime
SANPHAM
MASP
TENSP
DVT
NUOCSX
GIA
Mã sản phẩm
Tên sản phẩm
Đơn vị tính
Nước sản xuất
Giá bán
char(4)
varchar(40)
varchar(20)
varchar(40)
money
HOADON
SOHD
NGHD
MAKH
MANV
TRIGIA
Số hóa đơn
Ngày mua hàng
Mã khách hàng nào mua
Nhân viên bán hàng
Trị giá hóa đơn
int
smalldatetime
char(4)
char(4)
money
CTHD
SOHD
MASP
SL
Số hóa đơn
Mã sản phẩm
Số lượng
int
char(4)
int
KHACHHANG
I. Ngôn ngữ định nghĩa dữ liệu (Data Definition Language):
1.
Tạo các quan hệ và khai báo các khóa chính, khóa ngoại của quan hệ.
2.
Thêm vào thuộc tính GHICHU có kiểu dữ liệu varchar(20) cho quan hệ SANPHAM.
3.
Thêm vào thuộc tính LOAIKH có kiểu dữ liệu là tinyint cho quan hệ KHACHHANG.
4.
Sửa kiểu dữ liệu của thuộc tính GHICHU trong quan hệ SANPHAM thành varchar(100).
5.
Xóa thuộc tính GHICHU trong quan hệ SANPHAM.
6.
Làm thế nào để thuộc tính LOAIKH trong quan hệ KHACHHANG có thể lưu các giá trị là: “Vang
lai”, “Thuong xuyen”, “Vip”, …
7.
Đơn vị tính của sản phẩm chỉ có thể là (“cay”,”hop”,”cai”,”quyen”,”chuc”)
8.
Giá bán của sản phẩm từ 500 đồng trở lên.
9.
Mỗi lần mua hàng, khách hàng phải mua ít nhất 1 sản phẩm.
10.
Ngày khách hàng đăng ký là khách hàng thành viên phải lớn hơn ngày sinh của người đó.
11.
Ngày mua hàng (NGHD) của một khách hàng thành viên sẽ lớn hơn hoặc bằng ngày khách hàng đó
đăng ký thành viên (NGDK).
12.
Ngày bán hàng (NGHD) của một nhân viên phải lớn hơn hoặc bằng ngày nhân viên đó vào làm.
13.
Mỗi một hóa đơn phải có ít nhất một chi tiết hóa đơn.
14.
Trị giá của một hóa đơn là tổng thành tiền (số lượng*đơn giá) của các chi tiết thuộc hóa đơn đó.
15.
Doanh số của một khách hàng là tổng trị giá các hóa đơn mà khách hàng thành viên đó đã mua.
II. Ngôn ngữ thao tác dữ liệu (Data Manipulation Language):
1.
Nhập dữ liệu cho các quan hệ trên.
2.
Tạo quan hệ SANPHAM1 chứa toàn bộ dữ liệu của quan hệ SANPHAM. Tạo quan hệ
KHACHHANG1 chứa toàn bộ dữ liệu của quan hệ KHACHHANG.
3.
Cập nhật giá tăng 5% đối với những sản phẩm do “Thai Lan” sản xuất (cho quan hệ SANPHAM1)
4.
Cập nhật giá giảm 5% đối với những sản phẩm do “Trung Quoc” sản xuất có giá từ 10.000 trở xuống
(cho quan hệ SANPHAM1).
5.
Cập nhật giá trị LOAIKH là “Vip” đối với những khách hàng đăng ký thành viên trước ngày
1/1/2007 có doanh số từ 10.000.000 trở lên hoặc khách hàng đăng ký thành viên từ 1/1/2007 trở về
sau có doanh số từ 2.000.000 trở lên (cho quan hệ KHACHHANG1).
III. Ngôn ngữ truy vấn dữ liệu có cấu trúc:
1.
In ra danh sách các sản phẩm (MASP,TENSP) do “Trung Quoc” sản xuất.
2.
In ra danh sách các sản phẩm (MASP, TENSP) có đơn vị tính là “cay”, ”quyen”.
3.
In ra danh sách các sản phẩm (MASP,TENSP) có mã sản phẩm bắt đầu là “B” và kết thúc là “01”.
4.
In ra danh sách các sản phẩm (MASP,TENSP) do “Trung Quốc” sản xuất có giá từ 30.000 đến
40.000.
5.
In ra danh sách các sản phẩm (MASP,TENSP) do “Trung Quoc” hoặc “Thai Lan” sản xuất có giá từ
30.000 đến 40.000.
6.
In ra các số hóa đơn, trị giá hóa đơn bán ra trong ngày 1/1/2007 và ngày 2/1/2007.
7.
In ra các số hóa đơn, trị giá hóa đơn trong tháng 1/2007, sắp xếp theo ngày (tăng dần) và trị giá của
hóa đơn (giảm dần).
8.
In ra danh sách các khách hàng (MAKH, HOTEN) đã mua hàng trong ngày 1/1/2007.
9.
In ra số hóa đơn, trị giá các hóa đơn do nhân viên có tên “Nguyen Van B” lập trong ngày
28/10/2006.
10.
In ra danh sách các sản phẩm (MASP,TENSP) được khách hàng có tên “Nguyen Van A” mua trong
tháng 10/2006.
11.
Tìm các số hóa đơn đã mua sản phẩm có mã số “BB01” hoặc “BB02”.
12.
Tìm các số hóa đơn đã mua sản phẩm có mã số “BB01” hoặc “BB02”, mỗi sản phẩm mua với số
lượng từ 10 đến 20.
13.
Tìm các số hóa đơn mua cùng lúc 2 sản phẩm có mã số “BB01” và “BB02”, mỗi sản phẩm mua với
số lượng từ 10 đến 20.
14.
In ra danh sách các sản phẩm (MASP,TENSP) do “Trung Quoc” sản xuất hoặc các sản phẩm được bán
ra trong ngày 1/1/2007.
15.
In ra danh sách các sản phẩm (MASP,TENSP) không bán được.
16.
In ra danh sách các sản phẩm (MASP,TENSP) không bán được trong năm 2006.
17.
In ra danh sách các sản phẩm (MASP,TENSP) do “Trung Quoc” sản xuất không bán được trong năm
2006.
18.
Tìm số hóa đơn đã mua tất cả các sản phẩm do Singapore sản xuất.
19.
Tìm số hóa đơn trong năm 2006 đã mua ít nhất tất cả các sản phẩm do Singapore sản xuất.
20.
Có bao nhiêu hóa đơn không phải của khách hàng đăng ký thành viên mua?
21.
Có bao nhiêu sản phẩm khác nhau được bán ra trong năm 2006.
22.
Cho biết trị giá hóa đơn cao nhất, thấp nhất là bao nhiêu ?
23.
Trị giá trung bình của tất cả các hóa đơn được bán ra trong năm 2006 là bao nhiêu?
24.
Tính doanh thu bán hàng trong năm 2006.
25.
Tìm số hóa đơn có trị giá cao nhất trong năm 2006.
26.
Tìm họ tên khách hàng đã mua hóa đơn có trị giá cao nhất trong năm 2006.
27.
In ra danh sách 3 khách hàng (MAKH, HOTEN) có doanh số cao nhất.
28.
In ra danh sách các sản phẩm (MASP, TENSP) có giá bán bằng 1 trong 3 mức giá cao nhất.
29.
In ra danh sách các sản phẩm (MASP, TENSP) do “Thai Lan” sản xuất có giá bằng 1 trong 3 mức giá
cao nhất (của tất cả các sản phẩm).
30.
In ra danh sách các sản phẩm (MASP, TENSP) do “Trung Quoc” sản xuất có giá bằng 1 trong 3 mức giá
cao nhất (của sản phẩm do “Trung Quoc” sản xuất).
31.
* In ra danh sách 3 khách hàng có doanh số cao nhất (sắp xếp theo kiểu xếp hạng).
32.
Tính tổng số sản phẩm do “Trung Quoc” sản xuất.
33.
Tính tổng số sản phẩm của từng nước sản xuất.
34.
Với từng nước sản xuất, tìm giá bán cao nhất, thấp nhất, trung bình của các sản phẩm.
35.
Tính doanh thu bán hàng mỗi ngày.
36.
Tính tổng số lượng của từng sản phẩm bán ra trong tháng 10/2006.
37.
Tính doanh thu bán hàng của từng tháng trong năm 2006.
38.
Tìm hóa đơn có mua ít nhất 4 sản phẩm khác nhau.
39.
Tìm hóa đơn có mua 3 sản phẩm do “Viet Nam” sản xuất (3 sản phẩm khác nhau).
40.
Tìm khách hàng (MAKH, HOTEN) có số lần mua hàng nhiều nhất.
41.
Tháng mấy trong năm 2006, doanh số bán hàng cao nhất ?
42.
Tìm sản phẩm (MASP, TENSP) có tổng số lượng bán ra thấp nhất trong năm 2006.
43.
*Mỗi nước sản xuất, tìm sản phẩm (MASP,TENSP) có giá bán cao nhất.
44.
Tìm nước sản xuất sản xuất ít nhất 3 sản phẩm có giá bán khác nhau.
45.
*Trong 10 khách hàng có doanh số cao nhất, tìm khách hàng có số lần mua hàng nhiều nhất.
Giải bài tập 1:
USE master
DROP DATABASE QLBH
CREATE DATABASE QLBH
GO
USE QLBH
/*PHAN 1*/
/*cau 1*/
CREATE TABLE KHACHHANG(
MAKH CHAR(4),
HOTEN VARCHAR(40),
DCHI VARCHAR(50),
SODT VARCHAR(20),
NGSINH SMALLDATETIME,
NGDK SMALLDATETIME,
DOANHSO MONEY,
PRIMARY KEY(MAKH)
)
GO
CREATE TABLE NHANVIEN(
MANV CHAR(4),
HOTEN VARCHAR(40),
SODT VARCHAR(20),
NGVL SMALLDATETIME,
PRIMARY KEY (MANV)
)
GO
CREATE TABLE SANPHAM(
MASP CHAR(4),
TENSP VARCHAR(40),
DVT VARCHAR(40),
NUOCSX VARCHAR(40),
GIA MONEY,
PRIMARY KEY (MASP)
)
GO
CREATE TABLE HOADON(
SOHD INT,
NGHD SMALLDATETIME,
MAKH CHAR(4),
MANV CHAR(4),
TRIGIA MONEY,
PRIMARY KEY (SOHD)
)
GO
CREATE TABLE CTHD(
SOHD INT,
MASP CHAR(4),
SL INT,
PRIMARY KEY (SOHD, MASP)
)
ALTER TABLE HOADON
ADD CONSTRAINT FK_HD_KH
FOREIGN KEY (MAKH) REFERENCES KHACHHANG(MAKH)
ALTER TABLE HOADON
ADD CONSTRAINT FK_HD_NV
FOREIGN KEY (MANV) REFERENCES NHANVIEN(MANV)
ALTER TABLE CTHD
ADD CONSTRAINT FK_CTHD_HD
FOREIGN KEY (SOHD) REFERENCES HOADON(SOHD)
ALTER TABLE CTHD
ADD CONSTRAINT FK_CTHD_SP
FOREIGN KEY (MASP) REFERENCES SANPHAM(MASP)
/*cau 2*/
ALTER TABLE SANPHAM
ADD GHICHU VARCHAR(20)
GO
/*cau 3*/
ALTER TABLE KHACHHANG
ADD LOAIKH TINYINT
/*cau 4*/
ALTER TABLE SANPHAM
ALTER COLUMN GHICHU VARCHAR(100)
GO
/*cau 5*/
ALTER TABLE SANPHAM
DROP COLUMN GHICHU
GO
/*cau 6*/
ALTER TABLE KHACHHANG
ALTER COLUMN LOAIKH VARCHAR(50)
/*cau 7*/
ALTER TABLE SANPHAM
ADD CONSTRAINT CHK_DVT CHECK(DVT IN ('cay', 'hop', 'quyen', 'chuc', 'cai'))
GO
/*cau 8*/
ALTER TABLE SANPHAM
ADD CONSTRAINT CK_GIA CHECK(GIA >=500)
GO
/*cau 9*/
ALTER TABLE CTHD
ADD CONSTRAINT CK_CTHD CHECK(SL >=1)
GO
/* cau 10 */
ALTER TABLE KHACHHANG
ADD CONSTRAINT CK_NGAYDK CHECK (NGDK > NGSINH)
/*PHAN 2*/
/*CAU 1*/
SET DATEFORMAT dmy;
INSERT INTO NHANVIEN (MANV, HOTEN, SODT, NGVL) VALUES ('NV01', 'Nguyen Nhu Nhut', '0927345678',
'13/4/2006')
INSERT INTO NHANVIEN (MANV, HOTEN, SODT, NGVL) VALUES ('NV02', 'Le Thi Phi Yen', '0987567390',
'21/4/2006')
INSERT INTO NHANVIEN (MANV, HOTEN, SODT, NGVL) VALUES ('NV03', 'Nguyen Van B', '0997047382',
'27/4/2006')
INSERT INTO NHANVIEN (MANV, HOTEN, SODT, NGVL) VALUES ('NV04', 'Ngo Thanh Tuan', '0913758498',
'24/6/2006')
INSERT INTO NHANVIEN (MANV, HOTEN, SODT, NGVL) VALUES ('NV05', 'Nguyen Thi Truc Thanh',
'0918590387', '20/7/2006')
INSERT INTO KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK) VALUES ('KH01',
'Nguyen Van A', '731, Tran Hung Dao, Q5, TPHCM', '08823451', '22/10/1960', 13060000, '22/07/2006')
INSERT INTO KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK) VALUES ('KH02',
'Tran Ngoc Han', '23/5 Nguyen Trai, Q5, TpHCM', '0908256478', '03/04/1974', 280000, '30/07/2006')
INSERT INTO KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK) VALUES ('KH03',
'Tran Ngoc Linh', '45 Nguyen Canh Chan, Q1, TpHCM', '0938776266', '12/06/1980', 3860000, '05/08/2006')
INSERT INTO KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK) VALUES ('KH04',
'Tran Minh Long', '50/34 Le Dai hanh, Q10, TpHCM', '0917325476', '09/03/1965', 250000, '02/10/2006')
INSERT INTO KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK) VALUES ('KH05',
'Le Nhat Minh', '34 Truong Dinh, Q3, TPHCM', '08246108', '10/03/1960', 21000, '28/10/2006')
INSERT INTO KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK) VALUES ('KH06',
'Le Hoai Thuong', '227 Nguyen Van Cu, Q5, TpHCM', '08631738', '31/12/1981', 915000, '24/11/2006')
INSERT INTO KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK) VALUES ('KH07',
'Nguyen Van Tam', '32/3 Tran Binh Trong, Q5, TpHCM', '0916783565', '06/04/1971', 12500, '01/12/2006')
INSERT INTO KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK) VALUES ('KH08',
'Phan Thi Thanh', '45/2 An Duong Vuong, Q5, TPHCM', '0938435756', '10/01/1971', 365000, '13/12/2006')
INSERT INTO KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK) VALUES ('KH09',
'Le Ha Vinh', '873 Le Hong Phong, Q5, TPHCM', '08654763', '03/09/1979', 70000, '14/01/2007')
INSERT INTO KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK) VALUES ('KH10',
'Ha Duy Lap', '34/34B Nguyen Trai, Q1, TPHCM', '08768904', '02/05/1963', 67500, '16/01/2007')
INSERT INTO SANPHAM (MASP, TENSP, DVT, NUOCSX, GIA) VALUES ('BC01', 'But Chi', 'cay', 'Singapore',
3000)
INSERT INTO SANPHAM (MASP, TENSP, DVT, NUOCSX, GIA) VALUES ('BC02', 'But Chi', 'cay', 'Singapore',
5000)
INSERT INTO SANPHAM (MASP, TENSP, DVT, NUOCSX, GIA) VALUES ('BC03', 'But Chi', 'cay', 'Viet Nam',
3500)
INSERT INTO SANPHAM (MASP, TENSP, DVT, NUOCSX, GIA) VALUES ('BC04', 'But Chi', 'hop', 'Viet Nam',
30000)
INSERT INTO SANPHAM (MASP, TENSP, DVT, NUOCSX, GIA) VALUES ('BB01', 'But bi', 'cay', 'Viet Nam',
5000)
INSERT INTO SANPHAM (MASP, TENSP, DVT, NUOCSX, GIA) VALUES ('BB02', 'But bi', 'cay', 'Trung Quoc',
7000)
INSERT INTO SANPHAM (MASP, TENSP, DVT, NUOCSX, GIA) VALUES ('BB03', 'But bi', 'hop', 'Thai Lan',
100000)
INSERT INTO SANPHAM (MASP, TENSP, DVT, NUOCSX, GIA) VALUES ('TV01', 'Tap 100 giay mong', 'quyen',
'Trung Quoc', 2500)
INSERT INTO SANPHAM (MASP, TENSP, DVT, NUOCSX, GIA) VALUES ('TV02', 'Tap 200 giay mong', 'quyen',
'Trung Quoc', 4500)
INSERT INTO SANPHAM (MASP, TENSP, DVT, NUOCSX, GIA) VALUES ('TV03', 'Tap 100 giay tot', 'quyen', 'Viet
Nam', 3000)
INSERT INTO SANPHAM (MASP, TENSP, DVT, NUOCSX, GIA) VALUES ('TV04', 'Tap 200 giay tot', 'quyen', 'Viet
Nam', 5500)
INSERT INTO SANPHAM (MASP, TENSP, DVT, NUOCSX, GIA) VALUES ('TV05', 'Tap 100 trang', 'chuc', 'Viet
Nam', 23000)
INSERT INTO SANPHAM (MASP, TENSP, DVT, NUOCSX, GIA) VALUES ('TV06', 'Tap 200 trang', 'chuc', 'Viet
Nam', 53000)
INSERT INTO SANPHAM (MASP, TENSP, DVT, NUOCSX, GIA) VALUES ('TV07', 'Tap 100 trang', 'chuc', 'Trung
Quoc', 34000)
INSERT INTO SANPHAM (MASP, TENSP, DVT, NUOCSX, GIA) VALUES ('ST01', 'So tay 500 trang', 'quyen',
'Trung Quoc', 40000)
INSERT INTO SANPHAM (MASP, TENSP, DVT, NUOCSX, GIA) VALUES ('ST02', 'So tay loai 1', 'quyen', 'Viet
Nam', 55000)
INSERT INTO SANPHAM (MASP, TENSP, DVT, NUOCSX, GIA) VALUES ('ST03', 'So tay loai 2', 'quyen', 'Viet
Nam', 51000)
INSERT INTO SANPHAM (MASP, TENSP, DVT, NUOCSX, GIA) VALUES ('ST04', 'So tay', 'quyen', 'Thai Lan',
55000)
INSERT INTO SANPHAM (MASP, TENSP, DVT, NUOCSX, GIA) VALUES ('ST05', 'So tay mong', 'quyen', 'Thai
Lan', 20000)
INSERT INTO SANPHAM (MASP, TENSP, DVT, NUOCSX, GIA) VALUES ('ST06', 'Phan viet bang', 'hop', 'Viet
Nam', 5000)
INSERT INTO SANPHAM (MASP, TENSP, DVT, NUOCSX, GIA) VALUES ('ST07', 'Phan khong bui', 'hop', 'Viet
Nam', 5000)
INSERT INTO SANPHAM (MASP, TENSP, DVT, NUOCSX, GIA) VALUES ('ST08', 'Bong bang', 'cai', 'Viet Nam',
1000)
INSERT INTO SANPHAM (MASP, TENSP, DVT, NUOCSX, GIA) VALUES ('ST09', 'But long', 'cay', 'Viet Nam',
5000)
INSERT INTO SANPHAM (MASP, TENSP, DVT, NUOCSX, GIA) VALUES ('ST10', 'But long', 'cay', 'Trung Quoc',
7000)
INSERT INTO HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) VALUES (1001, '23/07/2006', 'KH01', 'NV01',
320000)
INSERT INTO HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) VALUES (1002, '12/08/2006', 'KH01', 'NV02',
840000)
INSERT INTO HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) VALUES (1003, '23/06/2006', 'KH02', 'NV01',
100000)
INSERT INTO HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) VALUES (1004, '01/09/2006', 'KH02', 'NV01',
180000)
INSERT INTO HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) VALUES (1005, '20/10/2006', 'KH01', 'NV02',
3800000)
INSERT INTO HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) VALUES (1006, '16/10/2006', 'KH01', 'NV03',
2430000)
INSERT INTO HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) VALUES (1007, '28/10/2006', 'KH03', 'NV03',
510000)
INSERT INTO HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) VALUES (1008, '28/10/2006', 'KH01', 'NV03',
440000)
INSERT INTO HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) VALUES (1009, '28/10/2006', 'KH03', 'NV04',
320000)
INSERT INTO HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) VALUES (1010, '01/11/2006', 'KH01', 'NV01',
5200000)
INSERT INTO HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) VALUES (1011, '04/11/2006', 'KH04', 'NV03',
250000)
INSERT INTO HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) VALUES (1012, '30/11/2006', 'KH05', 'NV03',
21000)
INSERT INTO HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) VALUES (1013, '12/12/2006', 'KH06', 'NV01',
5000)
INSERT INTO HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) VALUES (1014, '31/12/2006', 'KH03', 'NV02',
3150000)
INSERT INTO HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) VALUES (1015, '01/01/2007', 'KH06', 'NV01',
910000)
INSERT INTO HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) VALUES (1016, '01/01/2007', 'KH07', 'NV02',
12500)
INSERT INTO HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) VALUES (1017, '02/01/2007', 'KH08', 'NV03',
35000)
INSERT INTO HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) VALUES (1018, '13/01/2007', 'KH08', 'NV03',
330000)
INSERT INTO HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) VALUES (1019, '13/01/2007', 'KH01', 'NV03',
30000)
INSERT INTO HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) VALUES (1020, '14/01/2007', 'KH09', 'NV04',
70000)
INSERT INTO HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) VALUES (1021, '16/01/2007', 'KH10', 'NV04',
67500)
INSERT INTO HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) VALUES (1022, '16/01/2007', Null, 'NV03',
7000)
INSERT INTO HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) VALUES (1023, '17/01/2007', Null, 'NV01',
330000)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1001, 'TV02', 10)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1001, 'ST01', 5)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1001, 'BC01', 5)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1001, 'BC02', 10)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1001, 'ST08', 10)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1002, 'BC04', 20)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1002, 'BB01', 20)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1002, 'BB02', 20)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1003, 'BB03', 10)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1004, 'TV01', 20)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1004, 'TV02', 10)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1004, 'TV03', 10)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1004, 'TV04', 10)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1005, 'TV05', 50)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1005, 'TV06', 50)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1001, 'TV07', 20)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1006, 'ST01', 30)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1006, 'ST02', 10)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1007, 'ST03', 10)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1008, 'ST04', 8)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1009, 'ST05', 10)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1010, 'TV07', 50)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1010, 'ST07', 50)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1010, 'ST08', 100)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1010, 'ST04', 50)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1010, 'TV03', 100)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1011, 'ST06', 50)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1012, 'ST07', 3)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1013, 'ST08', 5)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1014, 'BC02', 80)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1014, 'BB02', 100)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1014, 'BC04', 60)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1014, 'BB01', 50)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1015, 'BB02', 30)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1015, 'BB03', 7)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1016, 'TV01', 5)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1017, 'TV02', 1)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1017, 'TV03', 1)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1017, 'TV04', 5)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1018, 'ST04', 6)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1019, 'ST05', 1)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1019, 'ST06', 2)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1020, 'ST07', 10)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1021, 'ST08', 5)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1021, 'TV01', 7)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1021, 'TV02', 10)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1022, 'TV02', 10)
INSERT INTO CTHD (SOHD, MASP, SL) VALUES (1023, 'ST04', 6)
----------------------/*CAU 2*/
--sao chep SANPHAM1 tu SANPHAM
SELECT * INTO SANPHAM1 FROM SANPHAM
SELECT * INTO KHACHHANG1 FROM KHACHHANG
/*CAU 3*/
--Cap nhat gia cho hang Thai Lan
UPDATE SANPHAM1 SET GIA = GIA * 1.05 WHERE NUOCSX = 'Thai Lan'
/*Cau 4*/
--Cap nhat gia cho hang Thai Lan
UPDATE SANPHAM1 SET GIA = GIA * 0.95 WHERE NUOCSX = 'Trung Quoc' AND GIA < 10000
/*Cau 5*/
UPDATE KHACHHANG1 SET LOAIKH = 'Vip' WHERE (NGDK < '20070101' AND DOANHSO > 1000000) OR
(NGDK >= '20070101' AND DOANHSO > 2000000)
/*PHAN 3*/
/*Cau 1: In ra danh sách các sản phẩm (MASP,TENSP) do “Trung Quoc” sản xuất.*/
--SELECT MASP, TENSP FROM SANPHAM WHERE NUOCSX = 'Trung Quoc'
/*Cau 2: In ra danh sách các sản phẩm (MASP, TENSP) có đơn vị tính là “cay”, ”quyen”.*/
--SELECT MASP, TENSP FROM SANPHAM WHERE DVT = 'cay' OR DVT = 'quyen'
/*Cau 3: In ra danh sách các sản phẩm (MASP,TENSP) có mã sản phẩm bắt đầu là “B” và kết thúc là “01”.*/
--SELECT MASP, TENSP FROM SANPHAM WHERE SUBSTRING(MASP, 1, 1) = 'B' AND SUBSTRING(MASP,
3, 4) = '01'
/*Cau 4: In ra danh sách các sản phẩm (MASP,TENSP) do “Trung Quốc” sản xuất có giá từ 30.000 đến
40.000.*/
--SELECT MASP, TENSP FROM SANPHAM WHERE NUOCSX = 'Trung Quoc' AND (GIA >= 30000 AND GIA
<= 40000)
/*Cau 5: In ra danh sách các sản phẩm (MASP,TENSP) do “Trung Quoc” hoặc “Thai Lan” sản xuất có giá từ
30.000 đến 40.000.
*/
--SELECT MASP, TENSP FROM SANPHAM WHERE (NUOCSX = 'Trung Quoc' OR NUOCSX = 'Thai Lan')
AND (GIA >= 30000 AND GIA <= 40000)
/*Cau 6: In ra các số hóa đơn, trị giá hóa đơn bán ra trong ngày 1/1/2007 và ngày 2/1/2007.*/
--SELECT SOHD, TRIGIA FROM HOADON WHERE NGHD >= '20070101' AND NGHD <= '20070102'
/*Cau 7: In ra các số hóa đơn, trị giá hóa đơn trong tháng 1/2007, sắp xếp theo ngày (tăng dần) và trị giá của
hóa đơn (giảm dần).
*/
/*
SELECT SOHD, TRIGIA FROM HOADON WHERE NGHD >= '20070101' AND NGHD <= '20070131'
ORDER BY NGHD ASC, TRIGIA DESC;
*/
/*Cau 8: In ra danh sách các khách hàng (MAKH, HOTEN) đã mua hàng trong ngày 1/1/2007.*/
/*
SELECT KHACHHANG.MAKH, KHACHHANG.HOTEN FROM KHACHHANG
INNER JOIN HOADON
ON KHACHHANG.MAKH = HOADON.MAKH
WHERE (HOADON.NGHD = '20070101')
*/
/*Cau 9: In ra số hóa đơn, trị giá các hóa đơn do nhân viên có tên “Nguyen Van B” lập trong ngày
28/10/2006.
*/
/*
SELECT HOADON.SOHD, HOADON.TRIGIA FROM HOADON
INNER JOIN NHANVIEN
ON HOADON.MANV = NHANVIEN.MANV
WHERE NHANVIEN.HOTEN = 'Nguyen Van B' AND HOADON.NGHD = '20061028'
*/
/*Cau 10: In ra danh sách các sản phẩm (MASP,TENSP) được khách hàng có tên “Nguyen Van A” mua trong
tháng 10/2006.
*/
/*
SELECT SANPHAM.MASP, SANPHAM.TENSP FROM HOADON
INNER JOIN CTHD
ON HOADON.SOHD = CTHD.SOHD
INNER JOIN SANPHAM
ON SANPHAM.MASP = CTHD.MASP
INNER JOIN KHACHHANG
ON KHACHHANG.MAKH = HOADON.MAKH
WHERE KHACHHANG.HOTEN = 'Nguyen Van A' AND HOADON.NGHD >= '20061001' AND
HOADON.NGHD <= '20061031'
*/
/*Cau 11: Tìm các số hóa đơn đã mua sản phẩm có mã số “BB01” hoặc “BB02”*/
/*
SELECT DISTINCT HOADON.SOHD FROM HOADON
INNER JOIN CTHD
ON HOADON.SOHD = CTHD.SOHD
WHERE CTHD.MASP = 'BB01' OR CTHD.MASP = 'BB02'
*/
/*Cau 12: Tìm các số hóa đơn đã mua sản phẩm có mã số “BB01” hoặc “BB02”, mỗi sản phẩm mua với số
lượng từ 10 đến 20.*/
/*
SELECT DISTINCT HOADON.SOHD FROM HOADON
INNER JOIN CTHD
ON HOADON.SOHD = CTHD.SOHD
WHERE (CTHD.MASP = 'BB01' OR CTHD.MASP = 'BB02') AND (CTHD.SL >= 10 AND CTHD.SL <= 20)
*/
/*Cau 13: Tìm các số hóa đơn mua cùng lúc 2 sản phẩm có mã số “BB01” và “BB02”, mỗi sản phẩm mua với
số lượng từ 10 đến 20.*/
/*
SELECT SOHD FROM CTHD A
WHERE A.MASP = 'BB01' AND A.SL >= 10 AND A.SL <= 20 AND EXISTS(
SELECT * FROM CTHD B
WHERE B.MASP = 'BB02' AND B.SL >= 10 AND B.SL <= 20 AND A.SOHD = B.SOHD
)
*/
/*Cau 14: In ra danh sách các sản phẩm (MASP,TENSP) do “Trung Quoc” sản xuất hoặc các sản phẩm được
bán ra trong ngày 1/1/2007.*/
/*
SELECT DISTINCT CTHD.MASP, SANPHAM.TENSP FROM CTHD
INNER JOIN SANPHAM
ON CTHD.MASP = SANPHAM.MASP
INNER JOIN HOADON
ON CTHD.SOHD = HOADON.SOHD
WHERE NUOCSX = 'Trung Quoc' OR NGHD = '20070101'
*/
/*Cau 15: In ra danh sách các sản phẩm (MASP,TENSP) không bán được.*/
/*
SELECT DISTINCT MASP, TENSP FROM SANPHAM
EXCEPT
SELECT DISTINCT SANPHAM.MASP, TENSP FROM SANPHAM
INNER JOIN CTHD
ON SANPHAM.MASP = CTHD.MASP
*/
/*Cau 16: In ra danh sách các sản phẩm (MASP,TENSP) không bán được trong năm 2006.*/
/*
SELECT DISTINCT MASP, TENSP FROM SANPHAM
EXCEPT
SELECT DISTINCT SANPHAM.MASP, TENSP FROM SANPHAM
INNER JOIN CTHD
ON SANPHAM.MASP = CTHD.MASP
INNER JOIN HOADON
ON CTHD.SOHD = HOADON.SOHD
WHERE HOADON.NGHD >= '20060101' AND HOADON.NGHD <= '20061231'
*/
/*Cau 17 In ra danh sách các sản phẩm (MASP,TENSP) do “Trung Quoc” sản xuất không bán được trong
năm 2006.
*/
/*
SELECT DISTINCT SANPHAM.MASP, SANPHAM.TENSP FROM SANPHAM
WHERE SANPHAM.NUOCSX = 'Trung Quoc'
EXCEPT
SELECT DISTINCT SANPHAM.MASP, SANPHAM.TENSP FROM SANPHAM
INNER JOIN CTHD
ON SANPHAM.MASP = CTHD.MASP
INNER JOIN HOADON
ON CTHD.SOHD = HOADON.SOHD
WHERE HOADON.NGHD >= '20060101' AND HOADON.NGHD <= '20061231'
*/
/*Cau 18: Tìm số hóa đơn đã mua tất cả các sản phẩm do Singapore sản xuất*/
/*Cach 1:
SELECT H.SOHD FROM HOADON H
WHERE NOT EXISTS(
SELECT * FROM SANPHAM S
WHERE NUOCSX = 'SINGAPORE' AND NOT EXISTS(
SELECT * FROM CTHD C
WHERE C.SOHD = H.SOHD AND C.MASP = S.MASP
)
)
*/
/*Cach 2:
DECLARE @Cau18 int;
SET @Cau18 = (
SELECT COUNT(SANPHAM.MASP) FROM SANPHAM
WHERE SANPHAM.NUOCSX = 'Singapore'
)
SELECT HOADON.SOHD, COUNT(*) AS COUNT FROM HOADON
INNER JOIN CTHD
ON HOADON.SOHD = CTHD.SOHD
INNER JOIN SANPHAM
ON CTHD.MASP = SANPHAM.MASP
WHERE SANPHAM.NUOCSX = 'Singapore'
GROUP BY HOADON.SOHD
HAVING COUNT(*) = @Cau18
*/
/*Cau 19: Tìm số hóa đơn trong năm 2006 đã mua ít nhất tất cả các sản phẩm do Singapore sản xuất*/
/*
SELECT H.SOHD FROM HOADON
WHERE YEAR(NGHD) = 2006 AND NOT EXISTS(
SELECT * FROM SANPHAM
WHERE NUOCSX = 'Singapore' AND NOT EXISTS(
SELECT * FROM CTHD
WHERE CTHD.SOHD = HOADON.SOHD AND CTHD.MASP = SANPHAM.MASP
)
)
*/
/*Cau 20: Có bao nhiêu hóa đơn không phải của khách hàng đăng ký thành viên mua?*/
/*
SELECT COUNT(*) FROM HOADON
WHERE HOADON.MAKH IS NULL
*/
/*Cau 21: Có bao nhiêu sản phẩm khác nhau được bán ra trong năm 2006?*/
/*
SELECT COUNT(DISTINCT MASP) FROM CTHD
INNER JOIN HOADON
ON CTHD.SOHD = HOADON.SOHD
WHERE YEAR(HOADON.NGHD) = 2006
*/
/*Cau 22: Cho biết trị giá hóa đơn cao nhất, thấp nhất là bao nhiêu ?*/
--SELECT MAX(HOADON.TRIGIA) AS MAX, MIN(HOADON.TRIGIA) AS MIN FROM HOADON
/*Cau 23: Trị giá trung bình của tất cả các hóa đơn được bán ra trong năm 2006 là bao nhiêu?*/
/*
SELECT AVG(HOADON.TRIGIA) FROM HOADON
WHERE YEAR(HOADON.NGHD) = 2006
*/
/*Cau 24: Tính doanh thu bán hàng trong năm 2006.*/
/*
SELECT SUM(HOADON.TRIGIA) FROM HOADON
WHERE YEAR(HOADON.NGHD) = 2006
*/
/*Cau 25: Tìm số hóa đơn có trị giá cao nhất trong năm 2006.*/
/*
SELECT MAX(HOADON.TRIGIA) FROM HOADON
WHERE YEAR(HOADON.NGHD) = 2006
*/
/*Cau 26: Tìm họ tên khách hàng đã mua hóa đơn có trị giá cao nhất trong năm 2006*/
/*
SELECT KHACHHANG.HOTEN FROM HOADON
INNER JOIN KHACHHANG
ON KHACHHANG.MAKH = HOADON.MAKH
WHERE YEAR(HOADON.NGHD) = 2006 AND HOADON.TRIGIA = (SELECT MAX(HOADON.TRIGIA) FROM
HOADON WHERE YEAR(HOADON.NGHD) = 2006)
*/
/*Cau 27: In ra danh sách 3 khách hàng (MAKH, HOTEN) có doanh số cao nhất*/
/*
SELECT TOP 3 KHACHHANG.MAKH, KHACHHANG.HOTEN FROM KHACHHANG
ORDER BY KHACHHANG.DOANHSO DESC
*/
/*Cau 28: In ra danh sách các sản phẩm (MASP, TENSP) có giá bán bằng 1 trong 3 mức giá cao nhất.*/
/*
SELECT MASP, TENSP FROM SANPHAM
WHERE GIA IN (SELECT DISTINCT TOP 3 GIA FROM SANPHAM
ORDER BY
GIA DESC)
*/
/*Cau 29: In ra danh sách các sản phẩm (MASP, TENSP) do “Thai Lan” sản xuất có giá bằng 1 trong 3 mức
giá cao nhất (của tất cả các sản phẩm). */
/*
SELECT MASP, TENSP FROM SANPHAM
WHERE GIA IN (SELECT DISTINCT TOP 3 GIA FROM SANPHAM
ORDER BY
GIA DESC)
AND NUOCSX = 'Thai Lan'
*/
/*Cau 30: In ra danh sách các sản phẩm (MASP, TENSP) do “Trung Quoc” sản xuất có giá bằng 1 trong 3 mức
giá cao nhất (của sản phẩm do “Trung Quoc” sản xuất).*/
/*
SELECT MASP, TENSP FROM SANPHAM S
WHERE GIA IN (SELECT DISTINCT TOP 3 GIA FROM SANPHAM SS
WHERE SS.NUOCSX = 'Trung Quoc'
ORDER BY GIA DESC
)
AND S.NUOCSX = 'Trung Quoc'
*/
/*Cau 31: In ra danh sách 3 khách hàng có doanh số cao nhất (sắp xếp theo kiểu xếp hạng) */
/*
SELECT TOP 3 MAKH, HOTEN FROM KHACHHANG
ORDER BY DOANHSO DESC
*/
/*Cau 32: Tính tổng số sản phẩm do “Trung Quoc” sản xuất. */
/*
SELECT COUNT(NUOCSX) FROM SANPHAM
WHERE NUOCSX = 'Trung Quoc'
*/
/*Cau 33: Tính tổng số sản phẩm của từng nước sản xuất. */
/*
SELECT NUOCSX, COUNT(*) FROM SANPHAM
GROUP BY NUOCSX
*/
/*Cau 34: Với từng nước sản xuất, tìm giá bán cao nhất, thấp nhất, trung bình của các sản phẩm.*/
/*
SELECT NUOCSX, MAX(SANPHAM.GIA) AS GIACAONHAT, MIN(SANPHAM.GIA) AS GIATHAPNHAT,
AVG(SANPHAM.GIA) AS GIATRUNGBINH FROM SANPHAM
GROUP BY NUOCSX
*/
/*Cau 35: Tính doanh thu bán hàng mỗi ngày.*/
/*
SELECT NGHD, SUM(TRIGIA) FROM HOADON
GROUP BY NGHD
*/
/*Cau 36: Tính tổng số lượng của từng sản phẩm bán ra trong tháng 10/2006.*/
/*
SELECT MASP, SUM(SL) FROM CTHD
INNER JOIN HOADON
ON CTHD.SOHD = HOADON.SOHD
WHERE NGHD >= '20061001' AND NGHD < '20061101'
GROUP BY MASP
*/
/*Cau 37: Tính doanh thu bán hàng của từng tháng trong năm 2006.*/
/*
SELECT MONTH(NGHD) AS AA, SUM(TRIGIA) FROM HOADON
WHERE YEAR(NGHD) = 2006
GROUP BY MONTH(NGHD)
*/
/*Cau 38: Tìm hóa đơn có mua ít nhất 4 sản phẩm khác nhau.*/
/*
SELECT HOADON.SOHD FROM HOADON
INNER JOIN CTHD
ON HOADON.SOHD = CTHD.SOHD
GROUP BY HOADON.SOHD
HAVING COUNT(*) >= 4
*/
/*Cau 39: Tìm hóa đơn có mua 3 sản phẩm do “Viet Nam” sản xuất (3 sản phẩm khác nhau).*/
/*
SELECT SOHD FROM CTHD
INNER JOIN SANPHAM
ON CTHD.MASP = SANPHAM.MASP
WHERE NUOCSX = 'Viet Nam'
GROUP BY SOHD
HAVING COUNT(*) >= 3
*/
/*Cau 40: Tìm khách hàng (MAKH, HOTEN) có số lần mua hàng nhiều nhất.*/
/*
SELECT TOP 1 KHACHHANG.MAKH, HOTEN FROM KHACHHANG
INNER JOIN HOADON
ON HOADON.MAKH = KHACHHANG.MAKH
GROUP BY KHACHHANG.MAKH, KHACHHANG.HOTEN
ORDER BY COUNT(DISTINCT SOHD) DESC
*/
/*Cau 40: Tìm khách hàng (MAKH, HOTEN) có số lần mua hàng nhiều nhất.*/
/*
SELECT TOP 1 KHACHHANG.MAKH, HOTEN FROM KHACHHANG
INNER JOIN HOADON
ON HOADON.MAKH = KHACHHANG.MAKH
GROUP BY KHACHHANG.MAKH, KHACHHANG.HOTEN
ORDER BY COUNT(DISTINCT SOHD) DESC
*/
/*Cau 41: Tháng mấy trong năm 2006, doanh số bán hàng cao nhất ?*/
/*
SELECT TOP 1 MONTH(NGHD), SUM(TRIGIA) FROM HOADON
WHERE YEAR(NGHD) = 2006
GROUP BY MONTH(NGHD)
ORDER BY SUM(TRIGIA) DESC
*/
/*Cau 42: Tìm sản phẩm (MASP, TENSP) có tổng số lượng bán ra thấp nhất trong năm 2006.*/
/*
SELECT TOP 1 SANPHAM.MASP, SANPHAM.TENSP FROM CTHD
INNER JOIN SANPHAM
ON CTHD.MASP = SANPHAM.MASP
INNER JOIN HOADON
ON CTHD.SOHD = HOADON.SOHD
WHERE YEAR(NGHD) = 2006
GROUP BY SANPHAM.MASP, SANPHAM.TENSP
ORDER BY SUM(SL) ASC
*/
/*Cau 43: Mỗi nước sản xuất, tìm sản phẩm (MASP,TENSP) có giá bán cao nhất.*/
/*
DROP TABLE #CAU43
SELECT NUOCSX, MAX(GIA) GIATOIDA INTO #CAU43 FROM SANPHAM S
GROUP BY NUOCSX
SELECT #CAU43.NUOCSX, MASP, TENSP FROM #CAU43
INNER JOIN SANPHAM
ON #CAU43.GIATOIDA = SANPHAM.GIA
WHERE #CAU43.NUOCSX = SANPHAM.NUOCSX
*/
/*Cau 44: Tìm nước sản xuất sản xuất ít nhất 3 sản phẩm có giá bán khác nhau.*/
/*
SELECT NUOCSX, COUNT(DISTINCT GIA) FROM SANPHAM
GROUP BY NUOCSX
HAVING COUNT(DISTINCT GIA) >= 3
*/
/*Cau 45: *Trong 10 khách hàng có doanh số cao nhất, tìm khách hàng có số lần mua hàng nhiều nhất.*/
/*
DROP TABLE #Cau45A
DROP TABLE #Cau45B
SELECT MAKH, COUNT(MAKH) SOLANMUAHANG INTO #Cau45A FROM HOADON
WHERE MAKH IS NOT NULL
GROUP BY MAKH
ORDER BY SOLANMUAHANG DESC
SELECT TOP 10 MAKH, DOANHSO INTO #Cau45B FROM KHACHHANG
ORDER BY DOANHSO DESC
SELECT TOP 1 #Cau45A.MAKH FROM #Cau45A
INNER JOIN #Cau45B
ON #Cau45A.MAKH = #Cau45B.MAKH
*/