Cho biêt thơng tin về SBD, Ho, Tên, điểm của các thí sinh cĩ tổng điểm trong khoảng từ X đến Y tuỳ ý Select dsthisinh.* From dsthisinh inner join ketqua on dsthisinh.sbd=ketqua.sbd Wher
Trang 1Bài tập Cơ sở dữ liệu 1
Bài tập Cơ sở dữ liệu
Cho cơ sở dữ liệu TUYENSINH.MDB, thực hiện các câu Select Query sau:
1 Liệt kê danh sách các thí sinh đăng ký dự thi
SELECT DSThiSinh.*
FROM DSThiSinh;
2 Liệt kê danh sách các ngành và điểm chuẩn
select tennganh,diemchuan
from nganh;
3 Liệt kê danh sách các thí sinh đăng ký dự thi cĩ tên bắt đầu bằng ký tự R hoặc K
select dsthisinh.*
from dsthisinh
where left(ten,1) in ("R","K");
4 Liệt kê danh sách các thí sinh đăng ký dự thi cĩ họ lĩt là Phan và tên Hoa, Dung hoặc
Nga
select dsthisinh.*
from dsthisinh
where (left(holot,4) = "phan") and (ten in ("hoa","dung","nga"));
5 Liệt kê danh sách các thí sinh đăng ký dự thi thoả các yêu cầu sau:
họ lĩt là Phan
tên Hoa, Dung hoặc Nga
mã tỉnh là 2
select dsthisinh.*
from dsthisinh
where (left(holot,4)="phan")and(ten in ("hoa","dung","nga"))and(matinh=2);
6 Liệt kê danh sách các thí sinh đăng ký dự thi thoả các yêu cầu sau:
Phái nữ
Nguyện vọng 1 là ngành cĩ mã 410
Sắp xếp theo tên
select dsthisinh.*
from dsthisinh
where (phainam=false)and(nganh="410")
Trang 2Bài tập Cơ sở dữ liệu 2
order by ten;
7 Liệt kê danh sách các thí sinh cĩ điểm thi mơn tốn từ 7 đến 9
select dsthisinh.*
from dsthisinh inner join ketqua on dsthisinh.sbd=ketqua.sbd
where toan between 7 and 9;
8 Liệt kê danh sách các thí sinh cĩ điểm thi mơn tốn từ 7 đến 9 và được thưởng 2
select dsthisinh.*
from dsthisinh inner join ketqua on dsthisinh.sbd=ketqua.sbd
where (toan between 7 and 9)and (thuong=2);
9 Cho biêt thơng tin về SBD, Ho, Tên, điểm của các thí sinh cĩ tổng điểm trong khoảng từ
X đến Y (tuỳ ý )
Select dsthisinh.*
From dsthisinh inner join ketqua on dsthisinh.sbd=ketqua.sbd
Where (toan+ly+hoa+thuong) between X and Y;
10 Liệt kê danh sách các thí sinh cĩ điểm tổng cộng >= 25 theo thứ tự điểm tổng cộng giảm
dần
select dsthisinh.*
from dsthisinh inner join ketqua on dsthisinh.sbd=ketqua.sbd
where (toan+ly+hoa)>=25
order by (toan+ly+hoa) desc;
11 Liệt kê danh sách các thí sinh nữ thi vào ngành cĩ mã số “410” hoặc”405” và cĩ điểm
tổng cộng >=25
select dsthisinh.*
from dsthisinh inner join ketqua on dsthisinh.sbd=ketqua.sbd
where (phainam=false) and (nganh in ("410","405")) and ((toan+ly+hoa)>=25);
12 Cho biết điểm thi nhỏ nhất khác 0 của từng mơn Tốn, Lí, Hố
select min(a) as minT,min(b) as minL,min(c) as minH
from (select iif(toan=0,11,toan) as a,iif(ly=0,11,ly) as b,iif(hoa=0,11,hoa) as c
from ketqua);
13 Cho biết SBD, HoLot, Ten của những thí sinh nào cĩ ít nhất một mơn thi bị điểm 0
select dsthisinh.sbd,holot,ten
from dsthisinh inner join ketqua on dsthisinh.sbd=ketqua.sbd
where (toan*ly*hoa)<>0;
14 Cho biết SBD, HoLot, Ten của những thí sinh nào cĩ ba mơn thi đều bị điểm 0
Trang 3Bài tập Cơ sở dữ liệu 3
select dsthisinh.sbd,holot,ten
from dsthisinh inner join ketqua on dsthisinh.sbd=ketqua.sbd
where (toan=0)and(ly=0)and(hoa=0);
15 Cho biết SBD, HoLot, Ten của những thí sinh nào chỉ cĩ đúng một mơn thi bị điểm 0
select dsthisinh.sbd,holot,ten
from dsthisinh inner join ketqua on dsthisinh.sbd=ketqua.sbd
where
((toan=0)and(ly<>0)and(hoa<>0))or((toan<>0)and(ly=0)and(hoa<>0))or((toan<>0)and (ly<>0)and(hoa=0));
16 Cho biết điểm trung bình từng mơn Tốn, Lí, Hố của tất cả các thí sinh khơng bị điểm 0
cả 3 mơn
select dsthisinh.*,(toan+ly+hoa)/3 as diemtb
from dsthisinh inner join ketqua on dsthisinh.sbd=ketqua.sbd
where toan*ly*hoa<>0;
17 Đếm số thí sinh (Nam/Nữ) đăng kí dự thi
select count(a) as sonam,count(b) as sonu
from (select iif(phainam=true,1,null)as a,iif(phainam=false,1,null) as b
from dsthisinh);
18 Đếm số thí sinh (Nam/Nữ ) đăng ký dự thi theo từng tỉnh thành
select tennganh,count(a) as sonam,count(b) as sonu
from (select iif(phainam=true,1,null)as a,iif(phainam=false,1,null) as b,tennganh
from dsthisinh inner join nganh on dsthisinh.nganh=nganh.manganh) group by tennganh;
19 Đếm số thí sinh (Nam/Nữ ) đăng ký dự thi theo từng tỉnh thành và theo từng mã ngành
đăng kí nguyện vọng 1
select nganh,tennganh,count(a) as sonam,count(b) as sonu
from (select iif(phainam=true,1,null)as a,iif(phainam=false,1,null) as
b,tennganh,dsthisinh.nganh
from dsthisinh inner join nganh on dsthisinh.nganh=nganh.manganh)
group by nganh,tennganh;
20 Liệt kê danh sách các Tỉnh cĩ thí sinh đăng ký dự thi
select tentinh
from tinhthanh
where matinh in (select matinh
Trang 4Bài tập Cơ sở dữ liệu 4
from dsthisinh);
21 Liệt kê danh sách các Tỉnh khơng cĩ thí sinh đăng ký dự thi
select tentinh
from tinhthanh
where matinh not in (select matinh
from dsthisinh);
22 Cho biết ngành cĩ điểm chuẩn cao nhất
select tennganh
from nganh
where diemchuan in (select max(diemchuan) as maxdiemchuan
from nganh);
23
24 Cho biết số báo danh họ tên các thí sinh cĩ điểm thi mơn Tốn cao nhất
select dsthisinh.sbd,holot,ten,toan
from dsthisinh inner join ketqua on dsthisinh.sbd=ketqua.sbd
where toan in (select max(toan) as maxtoan
from ketqua);
25 Cho biết họ tên của thí sinh nhỏ tuổi nhất
select holot,ten,ngaysinh
from dsthisinh
where ngaysinh in (select max(ngaysinh) as a
from dsthisinh);
26 Cho biết họ tên và điểm các mơn của thí sinh cĩ tổng điểm cao nhất
select holot,ten,toan,ly,hoa
from dsthisinh inner join ketqua on dsthisinh.sbd=ketqua.sbd
where (toan+ly+hoa) in (select max(toan+ly+hoa) as maxtongdiem
from ketqua);
27 Cho biết thơng tin về SBD, Họ tên, điểm thi của các thí sinh trúng tuyển nguyện vọng 1
select dsthisinh.sbd,holot,ten,toan,ly,hoa
from nganh inner join (dsthisinh inner join ketqua on dsthisinh.sbd=ketqua.sbd) on
nganh.manganh=dsthisinh.nganh
where (toan+ly+hoa+thuong)>=diemchuan;
28 Cho biết bao nhiêu thí sinh đậu nguyện vọng 1
select count(dsthisinh.sbd) as sothisinh
Trang 5Bài tập Cơ sở dữ liệu 5
from nganh inner join (dsthisinh inner join ketqua on dsthisinh.sbd=ketqua.sbd) on
nganh.manganh=dsthisinh.nganh
where (toan+ly+hoa+thuong)>=diemchuan;
29 Cho biết tổng thí sinh trúng tuyển nguyện vọng 1 của từng ngành
select nganh.manganh,tennganh,count(dsthisinh.sbd) as sothisinh
from nganh inner join (dsthisinh inner join ketqua on dsthisinh.sbd=ketqua.sbd) on
nganh.manganh=dsthisinh.nganh
where (toan+ly+hoa+thuong)>=diemchuan
group by manganh,tennganh;
30 Liệt kê danh sách các Tỉnh cĩ thí sinh trúng tuyển nguyện vọng 1
select tentinh
from tinhthanh
where matinh in (select matinh
from nganh inner join (dsthisinh inner join ketqua on dsthisinh.sbd=ketqua.sbd) on nganh.manganh=dsthisinh.nganh
where (toan+ly+hoa+thuong)>=diemchuan);
31 Liệt kê danh sách các Tỉnh cĩ thí sinh đậu nguyện vọng 1 vào nghành 401
select tentinh
from tinhthanh
where matinh in (select matinh
from nganh inner join (dsthisinh inner join ketqua on dsthisinh.sbd=ketqua.sbd) on nganh.manganh=dsthisinh.nganh
where ((toan+ly+hoa+thuong)>=diemchuan)and (nganh = "401"));
32 Cho biết thơng tin của các thí sinh trúng tuyển nguyện vọng 1 vào nghành N( với N là
tham số do người sử dụng nhập vào)
select tentinh
from tinhthanh
where matinh in (select matinh
from nganh inner join (dsthisinh inner join ketqua on dsthisinh.sbd=ketqua.sbd) on nganh.manganh=dsthisinh.nganh
where ((toan+ly+hoa+thuong)>=diemchuan)and (nganh = "N"));
33 Đếm số thí sinh trúng tuyển nguyện vọng 1 theo từng ngành và của từng tỉnh
select tentinh,tennganh,count(dsthisinh.sbd) as sothisinh
Trang 6Bài tập Cơ sở dữ liệu 6
from tinhthanh inner join (nganh inner join (dsthisinh inner join ketqua on
dsthisinh.sbd=ketqua.sbd) on nganh.manganh=dsthisinh.nganh) on
dsthisinh.matinh=tinhthanh.matinh
where (toan+ly+hoa+thuong)>=diemchuan
group by tentinh,tennganh;
34 Liệt kê sbd, hoten, diem tong cong, diem chuan và kết quả đậu/ rớt của các thí sinh đăng
ký nguyện vọng 1 vào nghành Kế Tốn – Kiểm Tốn
select dsthisinh.sbd,holot,ten,(toan+ly+hoa+thuong) as
tongdiem,diemchuan,iif((toan+ly+hoa+thuong)>=diemchuan,"dau","rot") as ketqua
from nganh inner join (dsthisinh inner join ketqua on dsthisinh.sbd=ketqua.sbd) on
nganh.manganh=dsthisinh.nganh
where tennganh="KẾ TỐN-KIỂM TỐN";
35 Cho biết tổng số thí sinh đậu nguyện vọng 1 của những ngành cĩ tổng số thí sinh đậu
vượt chỉ tiêu
select sum(sothisinh) as sots
from (select tennganh,chitieu,count(dsthisinh.sbd) as sothisinh
from nganh inner join (dsthisinh inner join ketqua on dsthisinh.sbd=ketqua.sbd) on
nganh.manganh=dsthisinh.nganh
where (toan+ly+hoa+thuong)>=diemchuan
group by tennganh,chitieu)
where sothisinh>chitieu;
36 Đếm số thí sinh khơng trúng tuyển nguyện vọng 1 nhưng được trúng tuyển nguyện vọng
2, biết rằng điểm trúng tuyển nguyện vọng 2 cao hơn điểm trúng tuyển nguyện vọng 1 là 2 điểm
select count(dsthisinh.sbd) as sothisinh
from nganh inner join (dsthisinh inner join ketqua on dsthisinh.sbd=ketqua.sbd) on
nganh.manganh=dsthisinh.nganh2
where ((toan+ly+hoa+thuong)>=diemchuan+2)and(dsthisinh.sbd not in (select
dsthisinh.sbd
from nganh inner join (dsthisinh inner join ketqua on dsthisinh.sbd=ketqua.sbd) on
nganh.manganh=dsthisinh.nganh
where (toan+ly+hoa+thuong)>=diemchuan));
Trang 7Bài tập Cơ sở dữ liệu 7
37 Đếm số thí sinh khơng trúng tuyển nguyện vọng 1 nhưng được trúng tuyển nguyện vọng
2 theo từng mã ngành, biết rằng điểm trúng tuyển nguyện vọng 2 cao hơn điểm trúng tuyển nguyện vọng 1 là 2 điểm
select tennganh,count(dsthisinh.sbd) as sothisinh
from nganh inner join (dsthisinh inner join ketqua on dsthisinh.sbd=ketqua.sbd) on
nganh.manganh=dsthisinh.nganh2
where ((toan+ly+hoa+thuong)>=diemchuan+2)and(dsthisinh.sbd not in (select
dsthisinh.sbd
from nganh inner join (dsthisinh inner join ketqua on dsthisinh.sbd=ketqua.sbd) on
nganh.manganh=dsthisinh.nganh
where (toan+ly+hoa+thuong)>=diemchuan))
group by tennganh;
38 Đếm số thí sinh khơng trúng tuyển nguyện vọng 1 nhưng được trúng tuyển nguyện vọng
2 theo từng mã ngành và theo từng tỉnh thành, biết rằng điểm trúng tuyển nguyện vọng 2 cao hơn điểm trúng tuyển nguyện vọng 1 là 2 điểm
select tentinh,tennganh,count(dsthisinh.sbd) as sothisinh
from tinhthanh inner join (nganh inner join (dsthisinh inner join ketqua on
dsthisinh.sbd=ketqua.sbd) on nganh.manganh=dsthisinh.nganh2) on
tinhthanh.matinh=dsthisinh.matinh
where ((toan+ly+hoa+thuong)>=diemchuan+2)and(dsthisinh.sbd not in (select
dsthisinh.sbd
from nganh inner join (dsthisinh inner join ketqua on dsthisinh.sbd=ketqua.sbd) on
nganh.manganh=dsthisinh.nganh
where (toan+ly+hoa+thuong)>=diemchuan))
group by tentinh,tennganh;
39 Đếm số thí sinh khơng trúng tuyển nguyện vọng 1 và nguyện vọng 2
select count(dsthisinh.sbd) as sotskhongdau
from dsthisinh
where dsthisinh.sbd not in (select dsthisinh.sbd
from tinhthanh inner join (nganh inner join (dsthisinh inner join ketqua on
dsthisinh.sbd=ketqua.sbd) on nganh.manganh=dsthisinh.nganh2) on
tinhthanh.matinh=dsthisinh.matinh
where ((toan+ly+hoa+thuong)>=diemchuan+2)and(dsthisinh.sbd not in (select
dsthisinh.sbd
Trang 8Bài tập Cơ sở dữ liệu 8
from nganh inner join (dsthisinh inner join ketqua on dsthisinh.sbd=ketqua.sbd) on
nganh.manganh=dsthisinh.nganh
where (toan+ly+hoa+thuong)>=diemchuan)))and(dsthisinh.sbd not in (select dsthisinh.sbd from nganh inner join (dsthisinh inner join ketqua on dsthisinh.sbd=ketqua.sbd) on
nganh.manganh=dsthisinh.nganh
where (toan+ly+hoa+thuong)>=diemchuan));
40 Đếm số thí sinh khơng trúng tuyển nguyện vọng 1 và nguyện vọng 2 theo từng tỉnh
thành
select tentinh,tennganh,count(dsthisinh.sbd) as sotskhongdau
from tinhthanh inner join (dsthisinh inner join nganh on dsthisinh.nganh=nganh.manganh)
on tinhthanh.matinh=dsthisinh.matinh
where dsthisinh.sbd not in (select dsthisinh.sbd
from tinhthanh inner join (nganh inner join (dsthisinh inner join ketqua on dsthisinh.sbd=ketqua.sbd) on nganh.manganh=dsthisinh.nganh2) on tinhthanh.matinh=dsthisinh.matinh
where ((toan+ly+hoa+thuong)>=diemchuan+2)and(dsthisinh.sbd not in (select dsthisinh.sbd
from nganh inner join (dsthisinh inner join ketqua on dsthisinh.sbd=ketqua.sbd) on nganh.manganh=dsthisinh.nganh
where (toan+ly+hoa+thuong)>=diemchuan)))and(dsthisinh.sbd not in (select dsthisinh.sbd from nganh inner join (dsthisinh inner join ketqua on dsthisinh.sbd=ketqua.sbd) on nganh.manganh=dsthisinh.nganh
where (toan+ly+hoa+thuong)>=diemchuan))
group by tentinh,tennganh;
41 Cho biết thủ khoa của từng tỉnh
42 Cho biết thủ khoa của từng ngành
NGÂN HÀNG CÁC CÂU SQL
1 Tìm tất cả các TS nam cĩ họ là Phan, tên là Trung, sinh vào ngày 23/5 ( theo mẫu )
select sbd,holot,ten
from dsthisinh
where(phainam=true)and(left(holot,4)="phan")and(ten="trung")and(day(ngaysinh)=23)an
d (month(ngaysinh)=5);
Trang 9Bài tập Cơ sở dữ liệu 9
2 Tìm MaNganh và TenNganh của những ngành cĩ chỉ tiêu cao nhất
select manganh,tennganh,chitieu
from nganh
where chitieu in (select max(chitieu) as maxchitieu
from nganh);
3 Tìm MaNganh và TenNganh của những ngành cĩ điểm chuẩn cao nhất
select manganh,tennganh,diemchuan
from nganh
where diemchuan in (select max(diemchuan) as maxdiemchuan
from nganh);
4 Tìm tất cả các TS nữ thi vào ngành 410, cĩ tên bắt đầu là chữ A
select dsthisinh.*
from dsthisinh
where (phainam=false)and(nganh="410")and(left(ten,1)="a");
5 Tìm tất cả các TS thi vào ngành 410 hoặc ngành 408, cĩ tổng điểm ba mơn thi trong khoảng
từ 25 đến 29 điểm
select dsthisinh.*
from dsthisinh inner join ketqua on dsthisinh.sbd=ketqua.sbd
where (nganh in ("410","408"))and((toan+ly+hoa) between 25 and 29);
6 Tìm tất cả các TS nữ, họ Nguyễn, tên là Minh hoặc Nga, sinh năm 1983
select dsthisinh.*
from dsthisinh
where (phainam=false)and(left(holot,6)="nguyen")and(ten in
("minh","nga"))and(year(ngaysinh)=1983);
7 Tìm tất cả các TS thi vào ngành 410, cĩ điểm tổng cộng ba mơn thi 27
select dsthisinh.*
from dsthisinh inner join ketqua on dsthisinh.sbd=ketqua.sbd
where (nganh="410")and((toan+ly+hoa)>=27);
8 Cho biết ngành nào cĩ số TS đăng ký dự thi đơng
select top 1 tennganh,count(dsthisinh.sbd) as sothisinh
from dsthisinh inner join nganh on dsthisinh.nganh=nganh.manganh
group by tennganh
order by count(dsthisinh.sbd) desc;
9 Cho biết tỉnh thành nào cĩ TS thi vào ngành 410
Trang 10Bài tập Cơ sở dữ liệu 10
select tentinh
from tinhthanh
where matinh in (select matinh
from dsthisinh
where nganh="410");
10 Cho biết tỉnh thành nào cĩ TS đăng ký dự thi
select tentinh
from tinhthanh
where matinh in (select matinh
from dsthisinh)
11 Cho biết tỉnh thành nào khơng cĩ TS đăng ký dự thi
select tentinh
from tinhthanh
where matinh not in (select matinh
from dsthisinh)
12 Cho biết tỉnh thành nào cĩ nhiều TS đăng ký dự thi nhất, ngoại trừ TpHCM
select top 1 tentinh,count(sbd) as sothisinh
from dsthisinh inner join tinhthanh on dsthisinh.matinh=tinhthanh.matinh
where dsthisinh.matinh <> 2
group by tentinh
order by count(sbd) desc;
13 Cho biết tỉnh thành nào cĩ nhiều TS thi vào ngành 410 nhất, ngoại trừ TpHCM
select top 1 tentinh,count(sbd) as sothisinh
from dsthisinh inner join tinhthanh on dsthisinh.matinh=tinhthanh.matinh
where (dsthisinh.matinh <> 2)and(nganh="410")
group by tentinh
order by count(sbd) desc;
14 Cĩ bao nhiêu TS khơng thuộc đối tượng ưu tiên ?
select ((count(sbd))-(count(doituong))) as khonguutien
from dsthisinh;
15 Cĩ bao nhiêu TS khơng đăng ký nguyện vọng 2 ?
select ((count(sbd))-(count(nganh2))) as khongnganh2
from dsthisinh;
16 Cĩ bao nhiêu TS ở TpHCM khơng đăng ký nguyện vọng 2 vào 410