You are on page 1of 5

Môn Cơ Sở Dữ Liệu Nội dung thực hành

BÀI TẬP TUẦN 05



Bài 1: Với CSDL đã tạo ở tuần 1 như bên dưới, hãy thực hiện các yêu cầu sau.

Yêu cầu:
1.1. Lấy danh sách Mã Khoa, Tên Khoa và đếm số lượng sinh viên từng Khoa.
1.2. Lấy danh sách Mã Khoa,Tên Khoa nào có dưới 2 sinh viên.
1.3. Lấy danh sách môn học và đếm số lượng sinh viên tham gia dự thi môn đó, không tính
những lần thi lại.
1.4. Lấy danh sách các môn học có từ 3 sinh viên tham gia thi trở lên.
1.5. Đếm số lượng sinh viên sinh ở ‘Hà Nội’ và ‘Tp HCM’
1.6. Đếm số lượng sinh viên ‘Nam’ và ‘Nữ’. Thông tin bao gồm Phái và số lượng.
1.7. Tính tổng số tiết mà mối sinh viên phải học. Thông tin bao gồm Họ Tên sinh viên và Số
tiết học.
1.8. Lấy ra danh sách sinh viên học trên 90 tiết.
1.9. Cho biết sinh viên thi lại trên 2 lần.
1.10. Cho biết sinh viên nam có điểm lần 1 trên 7.0
Môn Cơ Sở Dữ Liệu Nội dung thực hành

1.11. Cho biết danh sách sinh viên rớt trên 2 môn ở lần thi 1.
1.12. Cho biết khoa nào có nhiều hơn 2 sinh viên nam.
1.13. Cho biết khoa có 2 sinh đạt học bổng từ 100.000 đến 200.000
1.14. Cho biết sinh viên nam học trên từ 3 môn trở lên.
1.15. Cho biết môn không có sinh viên rớt ở lần 1. (rớt là điểm <5)
1.16. Cho biết sinh viên đăng ký học hơn 3 môn mà thi lần 1 không bị rớt môn nào
1.17. Cho biết những sinh viên có điểm thi lần 1 môn cơ sở dữ liệu cao nhất.
1.18. Cho biết sinh viên khoa anh văn có tuổi lớn nhất.
1.19. Cho biết những sinh viên có cùng nơi sinh với sinh viên có mã số “A01”
1.20. Cho biết sinh viên khoa anh văn học môn văn phạm có điểm thi lần 1 thấp nhất.
1.21. Cho biết sinh viên thi môn cơ sở dữ liệu lần 2 có điểm bằng điểm cao nhất của sinh viên thi
môn cơ sở dữ liệu lần 1.
1.22. Cho biết sinh viên có điểm thi môn cơ sở dữ liệu lần 2 lớn hơn tất cả điểm thi lần 1 môn cơ
sở dữ liệu của những sinh viên khác.
1.23. Cho biết những sinh viên có học bổng lớn hơn tất cả học bổng của sinh viên thuộc khoa
anh văn
Môn Cơ Sở Dữ Liệu Nội dung thực hành

HƯỚNG DẪN
Truy vấn theo điều kiện gom nhóm
SELECT <danh sách cột>
FROM <danh sách bảng>
WHERE <điều kiện >
GROUP BY <danh sách cột gom nhóm>
HAVING <điều kiện gom nhóm>
Điều kiện được dùng để lọc ra những dữ liệu thỏa mãn một yêu cầu nào đó.
Có hai loại điều kiện cơ bản:
1. Điều kiện đặt bên trong mệnh đề WHERE: Là các điều kiện kiểm tra trực tiếp trên các Tên Cột của bảng và yêu cầu là một
giá trị dữ liệu có sẳn trong bảng.
Ví dụ: Cho bảng dữ liệu sau, hãy lấy ra danh sách các sinh viên sinh tại ‘Hà Nội’.

Lời giải: Ở đây, Cột cần tìm là cột NoiSinh và Giá trị cần tìm là chữ ‘Hà Nội’; nên ta viết lệnh WHERE với Tên Cột = Giá Trị
select *
from DMSV
where noisinh =N'Hà Nội'

2. Điều kiện đặt bên trong mênh đề HAVING: Sau khi thực hiện gọi lệnh GROUP BY chúng ta sẽ có một số yêu cầu tìm kiếm
trên dữ liệu đã được GROUP.
Ví dụ: Cho bảng dữ liệu sau, lấy ra danh sách Tên Khoa có nhiều hơn 1 sinh viên.
Môn Cơ Sở Dữ Liệu Nội dung thực hành

Lời giải: Ở đây ta thấy


• Bảng cần lấy là bảng Khoa, tuy nhiên để lấy thông tin sinh viên thì cần thêm bảng DMSV(chứa khoa Ngoại đến bảng Khoa).
• Trong bảng DMSV cột Mã Khoa chứa dữ liệu trùng.
• Để lấy số lượng sinh viên, thì yêu cầu ở đây là Đếm = > Sử dụng GROUP BY
select TenKhoa, MaKhoa, count(MaSV) as SoLuong
from DMSV,DMKhoa
where DMSV.MaKH=DMKHOA.MaKhoa
group by TenKhoa,MaKhoa

• Tuy nhiên, đề yêu cầu chỉ lấy ra danh sách khoa có Số sinh viên nhiều hơn 1. Hay cụ thể hơn là trên cột sử dụng hàm COUNT
• Khi điều kiện đặt trên các cột phát sinh do hàm COUNT, MAX, MIN, SUM, AVG thì điều kiện đượt đặt bên trong mệnh đề
HAVING

select TenKhoa, MaKhoa, count(MaSV) as SoLuong


from DMSV,DMKhoa
where DMSV.MaKH=DMKHOA.MaKhoa
group by TenKhoa,MaKhoa
having count(masv) > 1
Môn Cơ Sở Dữ Liệu Nội dung thực hành

Truy vấn con trả về một giá trị.


SELECT <danh sách các cột>
FROM <danh sách các bảng>
WHERE <so sánh tập hợp> (
SELECT <danh sách các cột>
FROM <danh sách các bảng>
WHERE <điều kiện>)
Ví dụ: Cho biết sinh viên nào có học bổng cao nhất.
B1. Tìm giá trị học bổng cao nhất (trả về một giá trị duy nhất).
B2. Lấy những sinh viên có học bổng bằng học bổng B1
Câu lệnh:

SELECT *
FROM DMSV
WHERE HocBong = ( SELECT MAX(HocBong)
FROM DMSV
)

HẾT

You might also like