Bài tập SQL .Bài tập SQL Sever cơ bản. Bài tập Quản lý điểm sinh viên SQL Sever. Bài tập Quản lý sinh viên SQL Sever. Bài tập Quản lý điểm sinh viên SQL Sever. Bài tập Quản lý điểm sinh viên SQL Sever. Bài tập Quản lý điểm sinh viên SQL Sever.
Trang 1SinhVien(MaSV, HoDem, Ten, NgaySinh, GioiTinh, NoiSinh, QueQuan, DiaChi, DienThoai, DiemDauVao, DoiTuong, KhuVuc)
MonHoc(MaMon, TenMon, SoTinChi, HocKy)
Diem(MaSV, MaMon, Diem)
1 Đưa ra họ tên sinh viên nữ có điểm đầu vào nằm trong khoảng từ 20 đến 25 và đối tượng là 5 hoặc 6 hoặc 7
2 Đưa ra họ tên, ngày sinh những sinh viên sinh vào quý II năm 1990
3 Đưa ra họ tên, tuổi những sinh viên có tuổi không thuộc từ 24 đến 27
4 Đưa ra mức điểm đầu vào cao nhất
5 Đếm xem có bao nhiêu sinh viên có đối tượng là 1
6 Đưa ra giới tính và số lượng sinh viên tương ứng
7 Đưa ra tên môn có số tín chỉ nhỏ nhất
8 Đếm xem có bao nhiêu sinh viên có khu vực là KV3 và KV1
9 Đưa ra danh sách 5 sinh viên có điểm đầu vào cao nhất
10 Đưa ra danh sách tỉnh thành mà sinh viên có nơi sinh ở đó (không
kể trùng lại)
11 Đưa ra đối tượng và số lượng sinh viên tương ứng
12 Đưa ra số tín chỉ và số lượng môn tương ứng
13 Đưa ra học kỳ và tổng số tín chỉ tương ứng của học kỳ đó
14 Đưa ra họ tên, ngày sinh, nơi sinh, điểm đầu vào của những sinh viên có điểm nhỏ hơn 25 và có họ là Phan
15 Đưa ra họ tên, ngày sinh, tuổi của những sinh viên có tên bắt đầu bằng chữ M
16 Đưa ra mức điểm đầu vào trung bình
17 Đưa ra danh sách sinh viên sắp xếp theo tên, họ đệm tăng dần
18 Đưa ra họ tên, ngày sinh, nơi sinh, điểm đầu vào của những sinh viên có nơi sinh không phải là Hà Nội và điểm đầu vào nằm trong
khoảng từ 18 đến 22
Trang 2Trang 3
CREATE TABLE SinhVien(
MaSV VARCHAR(10),
HoDem NVARCHAR(30),
Ten NVARCHAR(20),
NgaySinh DATETIME,
GioiTinh BIT,
NoiSinh NVARCHAR(30),
QueQuan NVARCHAR(30),
DiaChi NVARCHAR(50),
DienThoai VARCHAR(15),
DiemDauVao FLOAT,
DoiTuong VARCHAR(10),
KhuVuc VARCHAR(10)
)
INSERT INTO SinhVien VALUES('001', N'Nguyễn Văn' , N'A', '1990-10-2', 1, N'Hà Nội' , N'Hà Nội' , N'192 Minh Khai', '0336677889', 24, '1', 'KV1')
INSERT INTO SinhVien VALUES('002', N'Nguyễn Thị' , N'B', '1990-2-19', 0, N'Hà Nội' , N'Hà Nội' , N'192 Minh Khai', '0336677889', 18, '1', 'KV1')
INSERT INTO SinhVien VALUES('003', N'Phan Văn', N'C', '1990-6-21', 1, N'Bắc Ninh' , N'Hà Nội' , N'192 Minh Khai', '0336677889', 18, '1', 'KV1') INSERT INTO SinhVien VALUES('004', N'Mai Thị' , N'D', '1990-8-19', 0, N'Hà Nội' , N'Hà Nội' , N'192 Minh Khai', '0336677889', 24, '5', 'KV2')
INSERT INTO SinhVien VALUES('005', N'Hà Thị' , N'E', '1990-1-19', 0, N'Hà Nội' , N'Hà Nội' , N'192 Minh Khai', '0336677889', 18, '7', 'KV3')
GO
SELECT * FROM SinhVien
Trang 4CREATE TABLE MonHoc(
MaMon VARCHAR(10),
TenMon NVARCHAR(30),
SoTinChi INT,
HocKy INT
)
INSERT INTO MonHoc VALUES ('1001', N'CSDL', 3, 2)
INSERT INTO MonHoc VALUES ('1002', N'SQL', 3, 2)
INSERT INTO MonHoc VALUES ('1003', N'Toán A1', 2, 2)
GO
SELECT * FROM MonHoc
CREATE TABLE Diem(
MaSV VARCHAR(10),
MaMon VARCHAR(10),
Diem FLOAT
)
1 Đưa ra họ tên sinh viên nữ có điểm đầu vào nằm trong khoảng từ
20 đến 25 và đối tượng là 5 hoặc 6 hoặc 7
SELECT CONCAT_WS(' ', HoDem, Ten) AS N'Họ Tên'
FROM SinhVien
WHERE GioiTinh = 0
AND DiemDauVao BETWEEN 20 AND 25
AND DoiTuong IN (5, 6, 7)
2 Đưa ra họ tên, ngày sinh những sinh viên sinh vào quý II năm 1990 SELECT CONCAT_WS(' ', HoDem, Ten) AS N'Họ Tên'
FROM SinhVien
WHERE YEAR(NgaySinh) = 1990 AND MONTH(NgaySinh) BETWEEN 4
AND 6
Trang 5
SELECT CONCAT_WS(' ', HoDem, Ten) AS N'Họ Tên'
FROM SinhVien
WHERE YEAR(NgaySinh) NOT BETWEEN 24 AND 27
4 Đưa ra mức điểm đầu vào cao nhất
SELECT TOP 1 DiemDauVao AS N'Điểm đầu vào cao nhất'
FROM SinhVien
ORDER BY DiemDauVao DESC
5 Đếm xem có bao nhiêu sinh viên có đối tượng là 1
SELECT DoiTuong, COUNT(MaSV) AS N'Số sinh viên'
FROM SinhVien
GROUP BY DoiTuong
HAVING DoiTuong = 1
6 Đưa ra giới tính và số lượng sinh viên tương ứng
SELECT (CASE GioiTinh WHEN '0' THEN N'Nữ' WHEN '1' THEN N'Nam' END) AS N'Giới Tính' , COUNT(MaSV) AS N'Số sinh viên'
FROM SinhVien
GROUP BY GioiTinh
7 Đưa ra tên môn có số tín chỉ nhỏ nhất
SELECT TOP (1) TenMon
FROM MonHoc
ORDER BY SoTinChi ASC
8 Đếm xem có bao nhiêu sinh viên có khu vực là KV3 và KV1
SELECT KhuVuc, COUNT(MaSV) AS N'Số sinh viên'
FROM SinhVien
GROUP BY KhuVuc
Trang 6
9 Đưa ra danh sách 5 sinh viên có điểm đầu vào cao nhất
SELECT TOP(5) CONCAT_WS(' ', HoDem, Ten) AS N'Họ Tên' ,
DiemDauVao
FROM SinhVien
ORDER BY DiemDauVao DESC
10 Đưa ra danh sách tỉnh thành mà sinh viên có nơi sinh ở đó (không
kể trùng lại)
SELECT DISTINCT NoiSinh
FROM SinhVien
11 Đưa ra đối tượng và số lượng sinh viên tương ứng
SELECT DoiTuong, COUNT(MaSV) AS N'Số sinh viên'
FROM SinhVien
GROUP BY DoiTuong
12 Đưa ra số tín chỉ và số lượng môn tương ứng
SELECT SoTinChi, COUNT(MaMon) AS N'Số môn'
FROM MonHoc
GROUP BY SoTinChi
13 Đưa ra học kỳ và tổng số tín chỉ tương ứng của học kỳ đó
SELECT HocKy, SUM(SoTinChi) AS N'Tổng số tín chỉ'
FROM MonHoc
GROUP BY HocKy
14 Đưa ra họ tên, ngày sinh, nơi sinh, điểm đầu vào của những sinh viên có điểm nhỏ hơn 25 và có họ là Phan
SELECT CONCAT_WS(' ', HoDem, Ten) AS N'Họ Tên' , NgaySinh, NoiSinh, DiemDauVao
FROM SinhVien
WHERE DiemDauVao < 25 AND HoDem LIKE N'Phan%'
Trang 7
bằng chữ M
SELECT CONCAT_WS(' ', HoDem, Ten) AS N'Họ Tên' , NgaySinh,
YEAR(GETDATE()) - YEAR(NgaySinh) AS N'Tuổi'
FROM SinhVien
WHERE Ten LIKE N'M%'
16 Đưa ra mức điểm đầu vào trung bình
SELECT AVG(DiemDauVao) AS N'Điểm đầu vào trung bình'
FROM SinhVien
17 Đưa ra danh sách sinh viên sắp xếp theo tên, họ đệm tăng dần SELECT HoDem, Ten, NgaySinh, NoiSinh, DiemDauVao
FROM SinhVien
ORDER BY HoDem, Ten DESC
18 Đưa ra họ tên, ngày sinh, nơi sinh, điểm đầu vào của những sinh viên có nơi sinh không phải là Hà Nội và điểm đầu vào nằm trong
khoảng từ 18 đến 22
SELECT CONCAT_WS(' ', HoDem, Ten) AS N'Họ Tên' , NgaySinh, NoiSinh, DiemDauVao
FROM SinhVien
WHERE NoiSinh NOT LIKE N'Hà Nội' AND DiemDauVao BETWEEN 18
AND 22