· 9 years ago · Nov 23, 2016, 08:50 AM
1create database ManageSM
2use ManageSM
3--I.Ngôn ngữ định nghĩa dữ liệu (Data Definition Language):
4--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ệ.
5create table KHACHHANG
6(
7 MAKH char(4) not null primary key,
8 HOTEN varchar(40) not null unique,
9 DCHI varchar(50) not null,
10 SODT varchar(20) not null,
11 NGSINH smalldatetime not null,
12 NGDK smalldatetime not null,
13 DOANHSO money not null
14)
15
16create table NHANVIEN
17(
18 MANV char(4) not null primary key,
19 HOTEN varchar(40) not null unique,
20 SODT varchar(20) not null,
21 NGVL smalldatetime not null
22)
23
24create table SANPHAM
25(
26 MASP char(4) not null primary key,
27 TENSP varchar(40) not null,
28 DVT varchar(20) not null,
29 NUOCSX varchar(20) not null,
30 GIA int not null
31)
32
33create table HOADON
34(
35 SOHD int not null primary key,
36 NGHD smalldatetime not null,
37 MAKH char(4) foreign key references KHACHHANG(MAKH),
38 MANV char(4) foreign key references NHANVIEN(MANV),
39 TRIGIA money not null
40)
41
42create table CTHD
43(
44 SOHD int foreign key references HOADON(SOHD),
45 MASP char(4) foreign key references SANPHAM(MASP),
46 SL int,
47 constraint PK_CTHD primary key(SOHD,MASP)
48)
49--2. Thêm và o thuá»™c tÃnh GHICHU có kiểu dữ liệu varchar(20) cho quan hệ SANPHAM.
50alter table SANPHAM add GHICHU varchar(20)
51--3. Thêm và o thuá»™c tÃnh LOAIKH có kiểu dữ liệu là tinyint cho quan hệ KHACHHANG
52alter table KHACHHANG add LOAIKH tinyint
53--4. Sá»a kiểu dữ liệu cá»§a thuá»™c tÃnh GHICHU trong quan hệ SANPHAM thà nh varchar(100).
54alter table SANPHAM alter column GHICHU varchar(100)
55--5. Xóa thuá»™c tÃnh GHICHU trong quan hệ SANPHAM
56alter table SANPHAM drop column GHICHU
57--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â€, …
58alter table KHACHHANG alter column LOAIKH varchar(15)
59--7. ÄÆ¡n vị tÃnh cá»§a sản phẩm chỉ có thể là (“cayâ€,â€hopâ€,â€caiâ€,â€quyenâ€,â€chucâ€)
60alter table SANPHAM alter column DVT varchar(10)
61alter table SANPHAM add constraint DVT_CK check(DVT='hop' or DVT='cay' or DVT='cai' or DVT='quyen' or DVT='chuc')
62--8. Giá bán của sản phẩm từ 500 đồng trở lên.
63alter table SANPHAM add constraint CK_GIA check(GIA>=500)
64--9. Má»—i lần mua hà ng, khách hà ng phải mua Ãt nhất 1 sản phẩm.
65alter table CTHD add constraint CK_SL check(SL>=1)
66--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 đó.
67alter table KHACHHANG add constraint CK_NGDK check(NGDK > NGSINH)
68
69--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).
70create trigger CK_NGHD
71on HOADON
72for update,insert
73as
74 if update(NGHD)
75 begin
76 declare @NGHD smalldatetime, @NGDK smalldatetime
77 set @NGDK = (select NGDK from KHACHHANG A, inserted B where A.MAKH=B.MAKH)
78 set @NGHD = (select NGHD from inserted)
79 if(@NGHD <= @NGDK)
80 begin
81 print 'NGHD must be larger than NGDK'
82 rollback tran
83 end
84 end
85
86
87--II.Ngôn ngữ thao tác dữ liệu (Data Manipulation Language):
88--1. Nháºp dữ liệu cho các quan hệ trên.
89insert into NHANVIEN values('NV01','Nguyen Nhu Nhat','0927345678','2006/4/13')
90insert into NHANVIEN values('NV02','Le Thi Phi Yen','0987567390','2006/4/21')
91insert into NHANVIEN values('NV03','Nguyen Van B','0997047382','2006/4/27')
92insert into NHANVIEN values('NV04','Ngo Thanh Tuan','0913758498','2006/6/24')
93insert into NHANVIEN values('NV05','Nguyen Thi Truc Thanh','0918590387','2006/7/20')
94
95insert into KHACHHANG values('KH01','Nguyen Van A','731 Tran Hung Dao, Q5, TpHCM','08823451','1960/10/22','2006/07/22','13060000','')
96insert into KHACHHANG values('KH02','Tran Ngoc Han','23/5 Nguyen Trai, Q5, TpHCM','0908256478','1974/4/3','2006/07/30','280000','')
97insert into KHACHHANG values('KH03','Tran Ngoc Linh','45 Nguyen Canh Chan, Q1, TpHCM','0938776266','1980/6/12','2006/08/05','3860000','')
98insert into KHACHHANG values('KH04','Tran Minh Long','50/34 Le Dai Hanh, Q10, TpHCM','0917325476','1965/3/9','2006/10/02','250000','')
99insert into KHACHHANG values('KH05','Le Nhat Minh','34 Truong Dinh, Q3, TpHCM','08246108','1950/3/10','2006/10/28','21000','')
100insert into KHACHHANG values('KH06','Le Hoai Thuong','227 Nguyen Van Cu, Q5, TpHCM','08631738','1981/12/31','2006/11/24','915000','')
101insert into KHACHHANG values('KH07','Nguyen Van Tam','32/3 Tran Binh Trong, Q5, TpHCM','0916783565','1971/4/6','2006/12/01','12500','')
102insert into KHACHHANG values('KH08','Phan Thi Thanh','45/2 An Duong Vuong, Q5, TpHCM','0938435756','1971/1/10','2006/12/13','365000','')
103insert into KHACHHANG values('KH09','Le Ha Vinh','873 Le Hong Phong, Q5, TpHCM','08654763','1979/9/3','2007/01/14','70000','')
104insert into KHACHHANG values('KH10','Ha Duy Lap','34/34B Nguyen Trai, Q1, TpHCM','08768904','1983/5/2','2007/01/16','67500','')
105
106insert into SANPHAM values('BC01','But chi','cay','Singapore','3000')
107insert into SANPHAM values('BC02','But chi','cay','Singapore','5000')
108insert into SANPHAM values('BC03','But chi','cay','Viet Nam','3500')
109insert into SANPHAM values('BC04','But chi','hop','Viet Nam','30000')
110insert into SANPHAM values('BB01','But bi','cay','Viet Nam','5000')
111insert into SANPHAM values('BB02','But bi','cay','Trung Quoc','7000')
112insert into SANPHAM values('BB03','But bi','hop','Thai Lan','100000')
113insert into SANPHAM values('TV01','Tap 100 giay mong','quyen','Trung Quoc','2500')
114insert into SANPHAM values('TV02','Tap 200 giay mong','quyen','Trung Quoc','4500')
115insert into SANPHAM values('TV03','Tap 100 giay tot','quyen','Viet Nam','3000')
116insert into SANPHAM values('TV04','Tap 200 giay tot','quyen','Viet Nam','5500')
117insert into SANPHAM values('TV05','Tap 100 trang','chuc','Viet Nam','23000')
118insert into SANPHAM values('TV06','Tap 200 trang','chuc','Viet Nam','53000')
119insert into SANPHAM values('TV07','Tap 100 trang','chuc','Trung Quoc','34000')
120insert into SANPHAM values('ST01','So tay 500 trang','quyen','Trung Quoc','40000')
121insert into SANPHAM values('ST02','So tay loai 1','quyen','Viet Nam','55000')
122insert into SANPHAM values('ST03','So tay loai 2','quyen','Viet Nam','51000')
123insert into SANPHAM values('ST04','So tay','quyen','Thai Lan','55000')
124insert into SANPHAM values('ST05','So tay mong','quyen','Thai Lan','20000')
125insert into SANPHAM values('ST06','Phan viet bang','hop','Viet Nam','5000')
126insert into SANPHAM values('ST07','Phan khong bui','hop','Viet Nam','7000')
127insert into SANPHAM values('ST08','Bong bang','cai','Viet Nam','1000')
128insert into SANPHAM values('ST09','But long','cay','Viet Nam','5000')
129insert into SANPHAM values('ST10','But long','cay','Trung Quoc','7000')
130
131insert into HOADON values('1001','2006/07/23','KH01','NV01','320000')
132insert into HOADON values('1002','2006/08/12','KH01','NV02','840000')
133insert into HOADON values('1003','2006/08/23','KH02','NV01','100000')
134insert into HOADON values('1004','2006/09/01','KH02','NV01','180000')
135insert into HOADON values('1005','2006/10/20','KH01','NV02','3800000')
136insert into HOADON values('1006','2006/10/16','KH01','NV03','2430000')
137insert into HOADON values('1007','2006/10/28','KH03','NV03','510000')
138insert into HOADON values('1008','2006/10/28','KH01','NV03','440000')
139insert into HOADON values('1009','2006/10/28','KH03','NV04','200000')
140insert into HOADON values('1010','2006/11/01','KH01','NV01','5200000')
141insert into HOADON values('1011','2006/11/04','KH04','NV03','250000')
142insert into HOADON values('1012','2006/11/30','KH05','NV03','21000')
143insert into HOADON values('1013','2006/12/12','KH06','NV01','5000')
144insert into HOADON values('1014','2006/12/31','KH03','NV02','3150000')
145insert into HOADON values('1015','2007/01/01','KH06','NV01','910000')
146insert into HOADON values('1016','2007/01/01','KH07','NV02','12500')
147insert into HOADON values('1017','2007/01/02','KH08','NV03','35000')
148insert into HOADON values('1018','2007/01/13','KH08','NV03','330000')
149insert into HOADON values('1019','2007/01/13','KH01','NV03','30000')
150insert into HOADON values('1020','2007/01/14','KH09','NV04','70000')
151insert into HOADON values('1021','2007/01/16','KH10','NV03','67500')
152insert into HOADON values('1022','2007/01/16','','NV03','7000')
153insert into HOADON values('1023','2007/01/17','','NV01','330000')
154
155insert into CTHD values('1001','TV02','10')
156insert into CTHD values('1001','ST01','5')
157insert into CTHD values('1001','BC01','5')
158insert into CTHD values('1001','BC02','10')
159insert into CTHD values('1001','ST08','10')
160insert into CTHD values('1002','BC04','20')
161insert into CTHD values('1002','BB01','20')
162insert into CTHD values('1002','BB02','20')
163insert into CTHD values('1003','BB03','10')
164insert into CTHD values('1004','TV01','20')
165insert into CTHD values('1004','TV02','10')
166insert into CTHD values('1004','TV03','10')
167insert into CTHD values('1004','TV04','10')
168insert into CTHD values('1005','TV05','50')
169insert into CTHD values('1005','TV06','50')
170insert into CTHD values('1006','TV07','20')
171insert into CTHD values('1006','ST01','30')
172insert into CTHD values('1006','ST02','10')
173insert into CTHD values('1007','ST03','10')
174insert into CTHD values('1008','ST04','8')
175insert into CTHD values('1009','ST05','10')
176insert into CTHD values('1010','TV07','50')
177insert into CTHD values('1010','ST07','50')
178insert into CTHD values('1010','ST08','100')
179insert into CTHD values('1010','ST04','50')
180insert into CTHD values('1010','TV03','100')
181insert into CTHD values('1011','ST06','50')
182insert into CTHD values('1012','ST07','3')
183insert into CTHD values('1013','ST08','5')
184insert into CTHD values('1014','BC02','80')
185insert into CTHD values('1014','BB02','100')
186insert into CTHD values('1014','BC04','60')
187insert into CTHD values('1014','BB01','50')
188insert into CTHD values('1015','BB02','30')
189insert into CTHD values('1015','BB03','7')
190insert into CTHD values('1016','TV01','5')
191insert into CTHD values('1017','TV02','1')
192insert into CTHD values('1017','TV03','1')
193insert into CTHD values('1017','TV04','5')
194insert into CTHD values('1018','ST04','6')
195insert into CTHD values('1019','ST05','1')
196insert into CTHD values('1019','ST06','2')
197insert into CTHD values('1020','ST07','10')
198insert into CTHD values('1021','ST08','5')
199insert into CTHD values('1021','TV01','7')
200insert into CTHD values('1021','TV02','10')
201insert into CTHD values('1022','ST07','1')
202insert into CTHD values('1023','ST04','6')
203--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.
204select * into SANPHAM1 from SANPHAM
205select * into KHACHHANG1 from KHACHHANG
206--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)
207update SANPHAM1
208set GIA = GIA*1.05
209where NUOCSX= 'Thai Lan'
210--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).
211update SANPHAM1
212set GIA = GIA*0.95
213where (NUOCSX = 'Trung Quoc') and (GIA <= '10000')
214--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).
215update KHACHHANG1
216set LOAIKH='Vip'
217where (NGDK < '2007/1/1' and DOANHSO > '10000000') or (NGDK > '2007/1/1' and DOANHSO > '2000000')
218--III.Ngôn ngữ truy vấn dữ liệu có cấu trúc:
219--1. In ra danh sách các sản phẩm (MASP,TENSP) do “Trung Quoc†sản xuất
220select MASP, TENSP
221from SANPHAM
222where NUOCSX = 'Trung Quoc'
223--2. In ra danh sách các sản phẩm (MASP, TENSP) có đơn vị tÃnh là “cayâ€, â€quyenâ€.
224select MASP,TENSP
225from SANPHAM
226where DVT='cay' or DVT='quyen'
227--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â€.
228select MASP,TENSP
229from SANPHAM
230where MASP like 'B_01'
231--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
232select MASP,TENSP
233from SANPHAM
234where (NUOCSX='Trung Quoc') and (GIA between 30000 and 40000)
235--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.
236select MASP,TENSP
237from SANPHAM
238where (NUOCSX='Trung Quoc' or NUOCSX='Thai Lan') and (GIA between 30000 and 40000)
239--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.
240select SOHD,TRIGIA
241from HOADON
242where NGHD='2007/1/1' or NGHD='2007/1/2'
243--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).
244select SOHD,TRIGIA
245from HOADON
246where month(NGHD)=1 and year(NGHD)=2007
247order by NGHD ASC, TRIGIA DESC
248--8. In ra danh sách các khách hà ng (MAKH, HOTEN) đã mua hà ng trong ngà y 1/1/2007.
249select KHACHHANG.MAKH,HOTEN
250from KHACHHANG
251inner join HOADON
252on KHACHHANG.MAKH=HOADON.MAKH
253where NGHD='2007/1/1'
254--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.
255select SOHD,TRIGIA
256from HOADON
257inner join NHANVIEN
258on HOADON.MANV=NHANVIEN.MANV
259where (HOTEN='Nguyen Van B') and (NGHD='2006/10/28')
260--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.
261
262--11. Tìm các số hóa đơn đã mua sản phẩm có mã số “BB01†hoặc “BB02â€.
263select SOHD
264from CTHD
265where MASP in('BB01','BB02')
266--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.
267select SOHD
268from CTHD
269where (MASP in ('BB01','BB02')) and (SL between 10 and 20)
270--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.
271select SOHD
272from CTHD A
273where (A.MASP='BB01') and (SL between 10 and 20)
274and exists(select *
275from CTHD B
276where (B.MASP='BB02') and (SL between 10 and 20) and A.SOHD=B.SOHD
277)
278--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.
279select SANPHAM.MASP,TENSP
280from SANPHAM
281inner join CTHD
282on SANPHAM.MASP=CTHD.MASP
283where (NUOCSX='Trung Quoc')
284or CTHD.SOHD in(select distinct CTHD.SOHD
285from CTHD
286inner join HOADON
287on CTHD.SOHD=HOADON.SOHD
288where NGHD='2007/1/1'
289)
290--15. In ra danh sách các sản phẩm (MASP,TENSP) không bán được.
291select SP.MASP, SP.TENSP
292from SANPHAM SP
293where not exists (select CTHD.MASP from CTHD where SP.MASP=CTHD.MASP)
294--16. In ra danh sách các sản phẩm (MASP,TENSP) không bán được trong năm 2006.
295select SP.MASP, SP.TENSP
296from SANPHAM SP
297where SP.MASP not in
298(select CT.MASP
299from CTHD CT,HOADON HD
300where CT.SOHD=HD.SOHD
301and YEAR(HD.NGHD)=2006)
302--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.
303
304--18. Tìm số hóa đơn đã mua tất cả các sản phẩm do Singapore sản xuất.
305--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.
306--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?
307
308--21. Có bao nhiêu sản phẩm khác nhau được bán ra trong năm 2006.
309select count(distinct MASP) as SOLUONG
310from HOADON HD, CTHD CT
311where
312YEAR(HD.CTHD)=2006
313and CT.SOHD=HD.SOHD
314--22. Cho biết trị giá hóa đơn cao nhất, thấp nhất là bao nhiêu ?
315select MAX(TRIGIA) as 'CAONHAT'
316MIN(TRIGIA) as 'THAPNHAT'
317FROM HOADON HD
318--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?
319select AVG(TRIGIA) as 'TRUNG BINH TRI GIA HOA DON TRONG NAM 2006'
320from HOADON
321where YEAR(HOADON.NGHD)=2006
322--24. TÃnh doanh thu bán hà ng trong năm 2006.
323select SUM(TRIGIA) as 'DOANH THU NAM 2006'
324from HOADON
325where YEAR(NGHD)=2006
326--25. Tìm số hóa đơn có trị giá cao nhất trong năm 2006.
327select HD.SOHD as 'HOA DON CO TRI GIA CAO NHAT NAM 2006'
328from HOADON HD
329where YEAR(NGHD)=2006 and HD.TRIGIA>=ALL(select HD.TRIGIA from HOADON HD)
330--26. Tìm hỠtên khách hà ng đã mua hóa đơn có trị giá cao nhất trong năm 2006.
331select KH.HOTEN as 'HO TEN KHACH HANG MUA HOA DON TRI GIA CAO NHAT NAM 2006'
332from KHACHHANG KH, HOADON HD
333where YEAR(HD.NGHD)=2006 and KH.MAKH=HD.MAKH and HD.TRIGIA>=ALL(select HD.TRIGIA from HOADON HD where YEAR(HD.NGHD)=2006)
334--27. In ra danh sách 3 khách hà ng (MAKH, HOTEN) có doanh số cao nhất.
335select TOP 3 MAKH, HOTEN
336from KHACHHANG
337order by DOANHSO DESC
338--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.
339select MASP,TENSP
340from SANPHAM
341where GIA in (select distinct top 3 GIA from SANPHAM order by GIA desc)
342--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).
343select MASP, TENSP
344from SANPHAM
345where GIA in (select distinct top 3 GIA from SANPHAM order by GIA desc) and NUOCSX='Thai Lan'
346--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).
347select TENSP, MASP
348from SANPHAM
349where GIA in (select distinct top 3 GIA
350 from SANPHAM
351 where NUOCSX='Trung Quoc'
352 order by GIA desc )
353and NUOCSX='Trung Quoc'
354--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).
355select distinct top 3 DOANHSO
356from KHACHHANG
357order by DOANHSO desc
358--32. TÃnh tổng số sản phẩm do “Trung Quoc†sản xuất.
359select count(MASP)as 'so sp Trung Quoc'
360from SANPHAM
361where NUOCSX='Trung Quoc'
362group by NUOCSX
363--33. TÃnh tổng số sản phẩm cá»§a từng nước sản xuất.
364select NUOCSX as 'Nuoc sx',count(MASP)as 'tong sp'
365from SANPHAM
366group by NUOCSX
367--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.
368select
369--35. TÃnh doanh thu bán hà ng má»—i ngà y.
370--36. TÃnh tổng số lượng cá»§a từng sản phẩm bán ra trong tháng 10/2006.
371--37. TÃnh doanh thu bán hà ng cá»§a từng tháng trong năm 2006.
372select MONTH(NGHD) as 'thang', SUM(TRIGIA) as 'doanh thu thang'
373from HOADON
374where YEAR(NGHD)=2006
375group by MONTH(NGHD)
376--38. Tìm hóa đơn có mua Ãt nhất 4 sản phẩm khác nhau.
377select SOHD
378from CTHD
379group by SOHD
380having COUNT(MASP)>=4
381--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).
382select *
383from HOADON
384where SOHD IN
385(select SOHD
386from CTHD inner join SANPHAM on SANPHAM.MASP=CTHD.MASP and NUOCSX='Viet Nam'
387group by SOHD
388having COUNT(CTHD.MASP)=3)
389--40. Tìm khách hà ng (MAKH, HOTEN) có số lần mua hà ng nhiá»u nhất.
390select KH.MAKH, KH.HOTEN
391from KHACHHANG KH inner join HOADON HD on KH.MAKH=HD.MAKH
392group by HD.MAKH
393having COUNT(HD.MAKH)>=ALL(select COUNT(MAKH)
394 from HOADON
395 group by MAKH)
396
397--41. Tháng mấy trong năm 2006, doanh số bán hà ng cao nhất ?
398select top 1 with ties MONTH(NGHD) as 'Thang'
399from HOADON
400where YEAR(NGHD)=2006
401group by MONTH(NGHD)
402order by SUM(TRIGIA) desc
403--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.
404select SP.MASP, SP.TENSP
405from SANPHAM SP, CTHD CT, HOADON HD
406where SP.MASP=CT.MASP and YEAR(NGHD)=2006
407group by SP.MASP, SP.TENSP
408having SUM(CT.SL) <=ALL(select SUM(SL)
409 from CTHD
410 group by MASP)
411--43. *Mỗi nước sản xuất, tìm sản phẩm (MASP,TENSP) có giá bán cao nhất.
412select SP.NUOCSX, SP.MASP, SP.TENSP
413from SANPHAM SP
414where GIA>=ALL(select SP1.GIA
415 from SANPHAM SP1
416 where SP1.NUOCSX=SP.NUOCSX)
417--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.
418select NUOCSX, COUNT(distinct GIA)as 'so gia ban khac nhau'
419from SANPHAM
420group by NUOCSX
421having COUNT(distinct GIA)>=3
422--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.
423select KH.MAKH, KH.HOTEN
424from KHACHHANG KH, HOADON HD
425where HD.MAKH=KH.MAKH and KH.DOANHSO in(select top 10 DOANHSO
426 from KHACHHANG)
427group by KH.MAKH, KH.HOTEN
428having COUNT(HD.MAKH)>=ALL(select COUNT(MAKH)
429 from HOADON
430 group by MAKH)