You are on page 1of 10

II.

Quản lý sinh viên:


11. Bài 1
SELECT MaSV, Ho_dem, Ten, NgaySinh, GioiTinh, MaLop
FROM dbo.HSSV
WHERE (YEAR(NgaySinh) = 1986) AND (Ten LIKE N'%Minh')

12. Bài 2
SELECT dbo.HSSV.MaSV, dbo.HSSV.Ho_dem, dbo.HSSV.Ten,
dbo.HSSV.NgaySinh, dbo.HSSV.GioiTinh, dbo.DMLop.TenLop
FROM dbo.HSSV INNER JOIN
dbo.DMLop ON dbo.HSSV.MaLop = dbo.DMLop.MaLop
WHERE (dbo.DMLop.TenLop LIKE N'%Tin 3B%')

13. Bài 3
SELECT MaLop, COUNT(MaSV) AS SiSo
FROM dbo.HSSV
GROUP BY MaLop

14. Bài 4
SELECT dbo.DMMon.MaMon, dbo.DMMon.TenMon, dbo.DMMon.SoTiet,
dbo.DMMon.SoDVHT, dbo.DMMon.HThuc
FROM dbo.KHGDHK INNER JOIN
dbo.DMMon ON dbo.KHGDHK.MaMon = dbo.DMMon.MaMon
INNER JOIN
dbo.DMLop ON dbo.KHGDHK.MaLop = dbo.DMLop.MaLop
WHERE (dbo.KHGDHK.MaHocKy LIKE '07082') AND (dbo.DMLop.TenLop
LIKE N'%Tin 3B%')

15. Bài 5
SELECT MaSV, TongD / TongDVHT AS DTB
FROM (SELECT dbo.DIEM.MaSV, SUM(dbo.DIEM.Diem1 *
dbo.DMMon.SoDVHT) AS TongD, SUM(dbo.DMMon.SoDVHT) AS
TongDVHT
FROM dbo.DIEM INNER JOIN
dbo.DMMon ON dbo.DIEM.MaMon =
dbo.DMMon.MaMon INNER JOIN
dbo.KHGDHK ON dbo.DMMon.MaMon =
dbo.KHGDHK.MaMon
WHERE (dbo.KHGDHK.MaHocKy LIKE '07082')
GROUP BY dbo.DIEM.MaSV) AS A

16. Bài 6
SELECT dbo.HSSV.MaSV, dbo.HSSV.Ho_dem, dbo.HSSV.Ten,
dbo.HSSV.NgaySinh, dbo.HSSV.GioiTinh, dbo.HSSV.MaLop
FROM dbo.HSSV INNER JOIN
dbo.KHGDHK ON dbo.HSSV.MaLop = dbo.KHGDHK.MaLop
INNER JOIN
dbo.DIEM ON dbo.HSSV.MaSV = dbo.DIEM.MaSV INNER JOIN
dbo.DMMon ON dbo.KHGDHK.MaMon = dbo.DMMon.MaMon
AND dbo.DIEM.MaMon = dbo.DMMon.MaMon
WHERE (dbo.KHGDHK.MaHocKy = '07082') AND (dbo.DIEM.Diem1 < 5)
AND (dbo.DMMon.TenMon LIKE N'Lập trình C')

17. Bài 7
SELECT MaSV, Ho_dem, Ten, NgaySinh, GioiTinh, MaLop
FROM dbo.HSSV
WHERE (MaSV NOT IN
(SELECT MaSV
FROM dbo.DIEM
WHERE (Diem1 < 5)))

18. Bài 8
SELECT DK1.MaSV, DK1.Ho_dem, DK1.Ten, DK1.NgaySinh, DK1.GioiTinh
FROM (SELECT MaSV, Ho_dem, Ten, NgaySinh, GioiTinh
FROM dbo.HSSV
WHERE (MaSV NOT IN
(SELECT MaSV
FROM dbo.DIEM
WHERE (Diem1 < 7)))) AS DK1 INNER
JOIN
(SELECT MaSV, TongD / TongDVHT AS DTB
FROM (SELECT DIEM_1.MaSV,
SUM(DIEM_1.Diem1 * dbo.DMMon.SoDVHT) AS TongD,
SUM(dbo.DMMon.SoDVHT) AS TongDVHT
FROM dbo.DIEM AS DIEM_1 INNER
JOIN
dbo.DMMon ON DIEM_1.MaMon
= dbo.DMMon.MaMon INNER JOIN
dbo.KHGDHK ON
dbo.DMMon.MaMon = dbo.KHGDHK.MaMon
WHERE (dbo.KHGDHK.MaHocKy LIKE
'07082')
GROUP BY DIEM_1.MaSV) AS A
WHERE (TongD / TongDVHT >= 8)) AS DK2 ON
DK1.MaSV = DK2.MaSV
19. Bài 9
SELECT dbo.HSSV.MaSV, dbo.HSSV.Ho_dem, dbo.HSSV.Ten,
dbo.HSSV.NgaySinh, dbo.HSSV.GioiTinh, dbo.HSSV.MaLop
FROM (SELECT DiemTBMax.MaSV
FROM (SELECT TOP (1) MaSV, TongD / TongDVHT AS
DTB
FROM (SELECT DIEM_1.MaSV,
SUM(DIEM_1.Diem1 * dbo.DMMon.SoDVHT) AS TongD,
SUM(dbo.DMMon.SoDVHT)
AS TongDVHT
FROM dbo.DIEM AS DIEM_1
INNER JOIN
dbo.DMMon ON
DIEM_1.MaMon = dbo.DMMon.MaMon INNER JOIN
dbo.KHGDHK ON
dbo.DMMon.MaMon = dbo.KHGDHK.MaMon
WHERE
(dbo.KHGDHK.MaHocKy LIKE '07082')
GROUP BY DIEM_1.MaSV) AS A)
AS DiemTBMax INNER JOIN
(SELECT MaSV, TongD / TongDVHT AS DTB
FROM (SELECT DIEM_1.MaSV,
SUM(DIEM_1.Diem1 * DMMon_1.SoDVHT) AS TongD,
SUM(DMMon_1.SoDVHT) AS TongDVHT
FROM dbo.DIEM AS
DIEM_1 INNER JOIN
dbo.DMMon AS
DMMon_1 ON DIEM_1.MaMon = DMMon_1.MaMon INNER JOIN
dbo.KHGDHK AS
KHGDHK_1 ON DMMon_1.MaMon = KHGDHK_1.MaMon
WHERE
(KHGDHK_1.MaHocKy LIKE '07082')
GROUP BY DIEM_1.MaSV) AS
A_1) AS DiemTB ON DiemTBMax.DTB = DiemTB.DTB) AS X INNER JOIN
dbo.HSSV ON X.MaSV = dbo.HSSV.MaSV

III. Quản lý nhân sự:


20. Bài 1
SELECT MaCB, HoDem, Ten, NgaySinh, GioiTinh, MaQue, NgayVaoDang,
NgayNhapNgu, NgayXuatNgu
FROM dbo.HSCB
WHERE (MaQue LIKE N'%Hà Tây') AND (YEAR(NgayNhapNgu)
BETWEEN 1960 AND 1965)

21. Bài 2
SELECT MaCB, HoDem, Ten, NgaySinh, GioiTinh, MaQue,
NgayVaoDang, NgayNhapNgu, NgayXuatNgu
FROM dbo.HSCB
WHERE (YEAR(GETDATE()) - YEAR(NgaySinh) >= 50) AND (GioiTinh =
0) OR
(YEAR(GETDATE()) - YEAR(NgaySinh) >= 55) AND (GioiTinh =
1)

22. Bài 3
SELECT MaDonVi, COUNT(MaCB) AS SiSoCB
FROM dbo.QTCongTac
WHERE (ToiNgay = NULL)
GROUP BY MaDonVi

23. Bài 4
SELECT TOP (100) PERCENT dbo.HSCB.HoDem, dbo.HSCB.Ten,
dbo.DMDonVi.TenDonVi, dbo.DMChucVu.TenChucVu,
dbo.QTCongTac.TuNgay,
dbo.QTCongTac.ToiNgay
FROM dbo.QTCongTac INNER JOIN
dbo.HSCB ON dbo.QTCongTac.MaCB = dbo.HSCB.MaCB INNER
JOIN
dbo.DMDonVi ON dbo.QTCongTac.MaDonVi =
dbo.DMDonVi.MaDonVi INNER JOIN
dbo.DMChucVu ON dbo.QTCongTac.MaChucVu =
dbo.DMChucVu.MaChucVu
WHERE (dbo.HSCB.HoDem LIKE N'Nguyễn Văn') AND (dbo.HSCB.Ten
LIKE N'A')
ORDER BY dbo.QTCongTac.TuNgay

24. Bài 5
SELECT dbo.HSCB.MaCB, dbo.HSCB.HoDem, dbo.HSCB.Ten,
dbo.DMChucVu.TenChucVu
FROM dbo.DMChucVu INNER JOIN
dbo.QTCongTac ON dbo.DMChucVu.MaChucVu =
dbo.QTCongTac.MaChucVu INNER JOIN
dbo.HSCB ON dbo.QTCongTac.MaCB = dbo.HSCB.MaCB
WHERE (dbo.DMChucVu.TenChucVu LIKE N'Phó phòng') AND
(dbo.QTCongTac.ToiNgay IS NULL)
25. Bài 6
SELECT dbo.HSCB.MaCB, dbo.HSCB.HoDem, dbo.HSCB.Ten,
dbo.DMChucVu.TenChucVu, dbo.QTCongTac.TuNgay,
dbo.QTCongTac.ToiNgay
FROM dbo.DMChucVu INNER JOIN
dbo.QTCongTac ON dbo.DMChucVu.MaChucVu =
dbo.QTCongTac.MaChucVu INNER JOIN
dbo.HSCB ON dbo.QTCongTac.MaCB = dbo.HSCB.MaCB
WHERE (dbo.DMChucVu.TenChucVu LIKE N'Trưởng Phòng')

26. Bài 7
SELECT MaCB, HoDem, Ten, NgaySinh, GioiTinh, MaQue, NgayVaoDang,
NgayNhapNgu, NgayXuatNgu
FROM dbo.HSCB
WHERE (MaCB IN
(SELECT B.MaCB
FROM (SELECT TOP (1) MaCB, COUNT(MaCB) AS
SoLanLuanChuyen
FROM dbo.QTCongTac
GROUP BY MaCB
ORDER BY SoLanLuanChuyen DESC) AS A
INNER JOIN
(SELECT TOP (100) PERCENT MaCB,
COUNT(MaCB) AS SoLanLuanChuyen
FROM dbo.QTCongTac AS
QTCongTac_1
GROUP BY MaCB
ORDER BY SoLanLuanChuyen DESC) AS B
ON A.SoLanLuanChuyen = B.SoLanLuanChuyen))

27. Bài 8
SELECT ChuyenDen.TongCBChuyenDen, ChuyenDi.TongCBChuyenDi
FROM (SELECT COUNT(dbo.QTCongTac.MaCB) AS
TongCBChuyenDen
FROM dbo.QTCongTac INNER JOIN
dbo.DMDonVi ON dbo.QTCongTac.MaDonVi =
dbo.DMDonVi.MaDonVi
WHERE (YEAR(dbo.QTCongTac.TuNgay) >= 2005) AND
(dbo.DMDonVi.TenDonVi LIKE N'Phòng đào tạo')
GROUP BY dbo.QTCongTac.MaCB) AS ChuyenDen CROSS
JOIN
(SELECT COUNT(QTCongTac_1.MaCB) AS
TongCBChuyenDi
FROM dbo.QTCongTac AS QTCongTac_1 INNER JOIN
dbo.DMDonVi AS DMDonVi_1 ON
QTCongTac_1.MaDonVi = DMDonVi_1.MaDonVi
WHERE (YEAR(QTCongTac_1.ToiNgay) >= 2005) AND
(DMDonVi_1.TenDonVi LIKE N'Phòng đào tạo')
GROUP BY QTCongTac_1.MaCB) AS ChuyenDi

28. Bài 9
SELECT Nam.MaDonVi, Nam.TNam, Nu.TNu, Truong.TTruong, Pho.TPho,
CanBo.TCanBo, Tong.TCB
FROM (SELECT dbo.QTCongTac.MaDonVi,
COUNT(dbo.QTCongTac.MaCB) AS TNam
FROM dbo.QTCongTac INNER JOIN
dbo.HSCB ON dbo.QTCongTac.MaCB =
dbo.HSCB.MaCB
WHERE (dbo.HSCB.GioiTinh = 1)
GROUP BY dbo.QTCongTac.MaDonVi) AS Nam INNER JOIN
(SELECT QTCongTac_5.MaDonVi,
COUNT(QTCongTac_5.MaCB) AS TNu
FROM dbo.QTCongTac AS QTCongTac_5 INNER JOIN
dbo.HSCB AS HSCB_1 ON
QTCongTac_5.MaCB = HSCB_1.MaCB
WHERE (HSCB_1.GioiTinh = 0)
GROUP BY QTCongTac_5.MaDonVi) AS Nu ON
Nam.MaDonVi = Nu.MaDonVi INNER JOIN
(SELECT MaDonVi, COUNT(MaCB) AS TTruong
FROM dbo.QTCongTac AS QTCongTac_4
WHERE (MaChucVu LIKE N'T%')
GROUP BY MaDonVi) AS Truong ON Nam.MaDonVi =
Truong.MaDonVi AND Nu.MaDonVi = Truong.MaDonVi INNER JOIN
(SELECT MaDonVi, COUNT(MaCB) AS TPho
FROM dbo.QTCongTac AS QTCongTac_3
WHERE (MaChucVu LIKE N'P%')
GROUP BY MaDonVi) AS Pho ON Nam.MaDonVi =
Pho.MaDonVi AND Nu.MaDonVi = Pho.MaDonVi AND Truong.MaDonVi =
Pho.MaDonVi INNER JOIN
(SELECT MaDonVi, COUNT(MaCB) AS TCanBo
FROM dbo.QTCongTac AS QTCongTac_2
WHERE (MaChucVu LIKE N'CB%')
GROUP BY MaDonVi) AS CanBo ON Nam.MaDonVi =
CanBo.MaDonVi AND Nu.MaDonVi = CanBo.MaDonVi AND
Truong.MaDonVi = CanBo.MaDonVi AND Pho.MaDonVi =
CanBo.MaDonVi INNER JOIN
(SELECT MaDonVi, COUNT(MaCB) AS TCB
FROM dbo.QTCongTac AS QTCongTac_1
GROUP BY MaDonVi) AS Tong ON Nam.MaDonVi =
Tong.MaDonVi AND Nu.MaDonVi = Tong.MaDonVi AND Truong.MaDonVi =
Tong.MaDonVi AND
Pho.MaDonVi = Tong.MaDonVi AND CanBo.MaDonVi =
Tong.MaDonVi

*.tmp;*.~mp;*.old;*.grp;*.chk;*.wbk;*.bak;~$?*.*
Câu hỏi
Đề bài SQL Server
I. CSDL bán hàng
DM_NhaCungCap
Column Name Data Type Allow Nulls
MaKH char(4)
TenKH nvarchar(150)
DiaChi nvarchar(200)
MaSoThue nvarchar(50)
TaiKhoan nvarchar(100)
TenNganHang nvarchar(200)
GhiChu nvarchar(200)

DM_HangHoa
Column Name Data Type Allow Nulls
MaHang char(10)
TenHang nvarchar(50)
DonViTinh nvarchar(50)
DacTinh nvarchar(200)
DM_HoaDon
Column Name Data Type Allow Nulls
DM_NhanVien
MaHD char(10)
Column Name Data Type Allow Nulls
NgayLapHD smalldatetime
MaNV char(4)
MaKH char(4)
TenNhanVien nvarchar(30)
MaNV char(4)
ChucVu nvarchar(20)
MaLoai char(4)

ChiTietHoaDon DienGiai nvarchar(200)


Column Name Data Type Allow Nulls
MaHD char(10)
MaHang char(10)
SoLuong float
DonGia float
ChietKhau float

DM_LoaiPhieuXuatNhap
Column Name Data Type Allow Nulls
MaLoai char(4)
TenLoai nvarch...
GhiChu nvarch...

1. Liệt kê KH_NCC có địa chỉ ở Hà nội


2. Liệt kê hóa đơn bán hàng trong T4/2008
3. Liệt kê hóa đơn nhập hàng do nhân viên “Nguyễn Thị A” phụ trách lập
trong T4/2008
4. Lập báp cáo tổng hợp mặt hàng xuất từ đầu năm tới nay:
Mã hàng | Số lượng
5. Liệt kê 10 mặt hàng bán chạy nhất trong t4/2008 (số lượng khách hàng giao
dịch nhiều nhất)
6. Thống kê doanh thu bán hàng của từng nhân viên trong T4/2008
Doanh thu = SL*DG – SL*DG*Chiết_Khấu
7. báo cáo tổng hợp nhập, xuất, tồn tính từ 01/04/2008 tới 30/04/2008
Mã hàng | Tồn đầu kỳ | Tổng nhập | Tổng xuất | Tồn cuối kỳ
8. Liệt kê mặt hàng ko có người mua trong T4/2008
9. Báo cáo tổng hợp kết quả kinh doanh trong T4/2008
Tổng hàng nhập | Tổng hàng xuất
10. Liệt kê mặt hàng bán chạy nhất
II. CSDL Quản lý SV
DMMon
Column Name Data Type Allow Nulls
MaMon char(4)
TenMon nvarchar(50)
SoTiet float
SoDVHT float
HThuc char(2)
MaBoMon char(4)

DIEM
Column Name Data Type Allow Nulls
MaSV char(10)
MaMon char(4)
Diem1 float
Diem2 float
Diem3 float
KHGDHK
Column Name Data Type Allow Nulls
MaHocKy char(5)
MaLop char(4)
MaMon char(4)
MaGV char(4)
MaPhong char(4)

HSSV
Column Name Data Type Allow Nulls
MaSV char(10)
Ho_dem nvarchar(20)
Ten nvarchar(10)
NgaySinh smalldatetime
GioiTinh bit
DMGiaoVien
MaLop char(4)
Column Name Data Type Allow Nulls
MaGV char(4)
MaBoMon char(4)
TenGV nvarchar(50)
HocHam nvarchar(50)
HocVi nvarchar(50)

DMLop
Column Name Data Type Allow Nulls
MaLop char(4)
TenLop nvarchar(100)
MaKhoa char(4)
MaNganh char(4)
DMBoMon
Column Name Data Type Allow Nulls
MaBoMon char(4)
TenBoMon nvarchar(100)
MaKhoa char(4)

You might also like