You are on page 1of 4

---------------------------------TRUY VẤN CƠ BẢN----------------------------------------------

Tìm nhân viên làm việc ở phòng số 4


Select * from Nhanvien where phg=4
Tìm nhân viên mức lương trên 30,000
Select * from nhanvien where luong >= 30000
Tìm nhân viên mức lương trên 25,000 ở phòng số 4
Hoặc nhân viên mức lương trên 30,000 ở phòng số 5
Select * from nhanvien where ((luong>=25000 and phg=4) or (luong>=30000 and phg=5))
Cho biết đầy đủ họ tên của các nhân viên ở TP.HCM
Select * from nhanvien where (DChi like '%HCM')
Cho biết họ tên đầy đủ của nhân viên có họ bắt đầu bằng N
Select * from nhanvien where (Honv like 'N%')
Cho biết ngày sinh và địa chỉ của đinh bá tiên
Select ngsinh, dchi from nhanvien where (honv='ĐINH' AND TENLOT='BÁ' AND TENNV='TIÊN')
Cho biết các nhân viên sinh trước năm 1975
Select * from nhanvien where year(ngsinh)<=1975
Cho biết các sinh viên sinh trước ngày 30/04/1975
Select * from nhanvien where datediff(day, ngsinh, '04/30/1975')>0
Cho biết các nhân viên sinh trước ngày 30/04/1975 hoặc ở tp.hcm hoặc làm việc tại phòng số 4
Select * from nhanvien where datediff(day,ngsinh,'04/30/1975')>0 or (dchi like 'n%tphcm' or
phg=4)
TRUY VẤN SỬ DỤNG PHÉP KẾT-
Với mỗi phòng ban cho biết tên phòng ban và địa điểm
Select tenphg, diadiem from phongban left join diadiem_pgh on phongban.maphg=diadiem_pgh.maphg
Tìm tên trưởng phòng của từng phòng ban
Select honv + ' ' + tenlot + ' ' + tennv as Hoten from nhanvien right join phongban on
nhanvien.manv=phongban.trphg
Tìm tên và địa chỉ của nhân viên phòng nghiên cứu
Select honv + ' ' + tenlot + ' ' + tennv as Hoten, dchi from nhanvien inner join phongban on
nhanvien.manv=phongban.trphg
where tenphg= 'NGHIÊN CỨU'
Với mọi đề án ở hà nội, liệt kê các mã số đề án(mada), mã số phòng ban chủ
trì đền án(phong), họ tên, địa chỉ ngày sinh trưởng phòng
Select honv + ' ' + tenlot + ' ' + tennv as 'HỌ VÀ TÊN', dchi as 'ĐỊA CHỈ', ngsinh as 'NGÀY
SINH',phongban.maphg 'MÃ PHÒNG BAN' from (nhanvien inner join phongban on
nhanvien.manv=phongban.trphg)
inner join dean on dean.phong=phongban.maphg
where ddiem_da='HÀ NỘI'
Tìm những nhân viên nữ và người thân của họ
Select nhanvien.*,tentn from nhanvien inner join thannhan on nhanvien.manv=thannhan.ma_Nvien
where nhanvien.phai='Nữ'
Với mỗi nhân viên cho biết họ tên nhân viên và họ tên người quản lý
trực tiếp của nhân viên đó
Select nv.honv + ' ' + nv.tenlot + ' ' + nv.tennv as 'HỌ VÀ TÊN nhân viên', nv1.honv + ' ' +
nv1.tenlot + ' ' + nv1.tennv as 'HỌ VÀ TÊN quản lý'
from nhanvien nv left join nhanvien nv1 on nv.manv=nv1.ma_nql

Tên những nhân viên phòng số 5 có tham gia đề án sản phầm


xx và sản phẩm này do nhân viên nguyễn thanh tùng quản lý trực tiếp
Select * from (nhanvien inner join phongban on nhanvien.phg=phongban.maphg) inner join dean
on dean.phong=phongban.maphg
where (phg=5 and tenda='sản phẩm x' and honv='nguyễn' and tenlot='thanh' and tennv='tùng')
Cho biết tên đề án mà nhân viên đinh bá tiến tham gia
Select tenda from (nhanvien inner join phongban on nhanvien.phg=phongban.maphg) inner join
dean on dean.phong=phongban.maphg
where (honv='ĐINH' and tenlot='BÁ' and tennv='TIÊN')
Cho biết họ tên nhân viên và tên đề án nhân viên từng tham gia
Select honv + ' ' + tenlot + ' ' + tennv as 'HỌ VÀ TÊN', tenda from (nhanvien inner join
phongban on nhanvien.phg=phongban.maphg) left join dean on dean.phong=phongban.maphg
---------------------------------TRUY VẤN GOM NHÓM--------------------------------------------
20. Cho biết số lượng đề án công ty
Select count (mada) as 'Số lượng đề án' from dean
21. Cho biết số lượng đề án do phòng 'nghiên cứu' chủ trì
Select count (mada) as 'Số lượng đề án' from dean inner join phongban on
dean.phong=phongban.maphg
where tenphg='nghiên cứu'
22. Cho biết lương trung bình của nhân viên nữ
select avg(luong) as 'Trung bình lương' from nhanvien
where phai='nữ'
23. Cho biết số thân nhân của nhân viên đinh bá tiên
Select count(ma_nvien) as 'số lượng thân nhân'
from nhanvien inner join thannhan on nhanvien.manv = thannhan.ma_nvien
where (honv='ĐINH' AND tenlot='BÁ' and tennv='TIÊN')
Cach khac

Select count(ma_nvien) as 'số lượng thân nhân'


from nhanvien , thannhan
where nhanvien.manv = thannhan.ma_nvien and (honv='ĐINH' AND tenlot='BÁ' and tennv='TIÊN')
24. Với mỗi đề án, liệt kê tên đề án và tổng số giờ làm 1 tuần
của tất cả nhân viên tham gia đề án đó
select tenda, sum(thoigian) as 'Thoi gian 1 tuan'
from dean inner join phancong on phancong.mada=dean.mada
group by tenda
25. Với mỗi đề án, cho biết có bao nhiêu nhân viên tham gia đề án đó
SELECT DA.MADA, COUNT (PC.MA_NVIEN) AS SONHANVIEN
FROM DEAN DA LEFT JOIN PHANCONG PC ON DA.MADA=PC.MADA
GROUP BY DA.MADA
26. Với mỗi nhân viên, cho biết họ và tên nhân viên và nhân viên đó có bao nhiêu thân nhân
Select honv + ' ' + tennv as hoten, count (tn.ma_nvien) as soluongthannhan from nhanvien nv
left join thannhan tn on nv.manv=tn.ma_nvien
group by honv, tennv, ma_nvien
27. Với mỗi nhân viên, cho biết họ tên của nhân viên và số lƣợng đề án mà nhân viên đó đã
tham gia.
Select honv + ' ' + tennv as hoten, count (pc.ma_nvien) as soluongdean from (nhanvien nv left
join phancong pc on nv.manv=pc.ma_nvien)
group by honv, tennv
28. Với mỗi nhân viên, cho biết số lƣợng nhân viên mà nhân viên đó quản lý trực tiếp.
SELECT QL.MANV,COUNT (NV.MA_NQL) AS SoNVPhaiQuanLy
FROM NHANVIEN QL LEFT JOIN NHANVIEN NV ON QL.MANV=NV.MA_NQL
GROUP BY QL.MANV
29. Với mỗi phòng ban, liệt kê tên phòng ban (TENPHG) và lƣơng trung bình của những nhân
viên làm việc cho phòng ban đó.
select tenpb, avg(luong) as LuongTB from phongban left join nhanvien on nhanvien.phg =
phongban.maph
group by tenpb
30. Lƣơng trung bình của tất cả các nữ nhân viên
select avg(luong) as LuongTB from nhanvien
where phai='Nữ'
31. Với các phòng ban có mức lƣơng trung bình trên 30,000, liệt kê tên phòng ban và số lƣợng
nhân viên của phòng ban đó.
select tenpb, count(manv) as slnv from phongban join nhanvien on nhanvien.phg=phongban.maph
group by tenpb
having avg(luong) >30000
32. Cho biết số lƣợng đề án mà mỗi nhân viên tham gia
select manv, count(dean.mada) as slda from dean inner join phancong on phancong.mada=dean.mada
group by manv
33. Với mỗi phòng ban, cho biết tên phòng ban và số lƣợng đề án mà phòng ban đó chủ
trì
SELECT PB.TENPHG, COUNT(DA.MADA) AS SOLUONGDA
FROM PHONGBAN PB LEFT JOIN DEAN DA ON PB.MAPHG=DA.PHONG
GROUP BY DA.PHONG,PB.TENPHG

34. Với mỗi phòng ban, cho biết tên phòng ban, họ tên ngƣời trƣởng phòng
và số lƣợng đề án mà phòng ban đó chủ trì
SELECT PB.TENPHG,NV.HONV+' '+NV.TENLOT+' '+NV.TENNV AS TRUONGPHONG, COUNT(DA.MADA) AS
SOLUONGDA
FROM (PHONGBAN PB JOIN NHANVIEN NV ON PB.TRPHG=NV.MANV) LEFT JOIN DEAN DA ON PB.MAPHG=DA.PHONG
GROUP BY DA.PHONG,PB.TENPHG, NV.HONV, NV.TENLOT, NV.TENNV
35. Với mỗi phòng ban có mức lƣơng trung bình lớn hơn 40,000, cho biết tên phòng ban và
số lƣợng đề án mà phòng ban đó chủ trì.
select tenpb, count(dean.mada) as slda from (nhanvien inner join phongban on
nhanvien.manv=phongban.trphg)
left join dean on dean.mada=phongban.phong
group by maph
having avg(luong)>40000
36. Cho biết số đề án diễn ra tại từng địa điểm
select diadiem, count(mada) as slda from dean
group by diadiem
37. Với mỗi đề án, cho biết tên đề án và số lƣợng công việc của đề án này.
SELECT DA.TENDA, COUNT (*) AS SLCONGVIEC
FROM DEAN DA LEFT JOIN CONGVIEC CV ON DA.MADA=CV.MADA
GROUP BY DA.TENDA
38. Với mỗi công việc trong đề án có mã đề án là 30,
cho biết số lƣợng nhân viên đƣợc phân công .
select ten_cong_viec, count(phancong.manv) as slnv
from phancong left join congviec on (congviec.mada=phancong.mada and congviec.stt =
phancong.stt)
where phancong.mada=30
group by ten_cong_viec, phancong.mada
39. Với mỗi công việc trong đề án có mã đề án là 'Dao Tao',
cho biết số lƣợng nhân viên đƣợc phân công.
select ten_cong_viec, count(pc.manv) as slnv
from congviec cv left join (dean da join phancong pc on pc.mada=da.mada) on (cv.mada=pc.mada
and cv.stt=pc.stt)
where tenda='dao tao'
group by ten_cong_viec, tenda
-------------------------------------CÂU TRUY VẤN LỒNG ------------------------------------
40. Cho biết danh sách các đề án (MADA) có: nhân công với họ
(HONV) là ‘Dinh’ hoặc , có ngƣời trƣởng phòng chủ trì đề án với họ (HONV)
là ‘Dinh’.
select tenda from dean where mada in
(select mada from phancong pc join nhanvien nv on nv.manv=pc.ma_nvien
where honv like 'Đinh') or mada in
(select mada from (phancong pc join nhanvien nv on nv.manv=pc.ma_nvien)
join phongban pb on pb.trphg=nv.manv where honv like 'Đinh')
41. Danh sách những nhân viên (HONV, TENLOT, TENNV)
có trên 2 thân nhân.
select nv.honv + ' ' + nv.tennv as hoten
from nhanvien nv
where (select count(*) from thannhan tn where tn.ma_nvien=nv.manv)>2
42. Danh sách những nhân viên (HONV, TENLOT, TENNV)
không có thân nhân nào.
select honv, tennv from nhanvien nv
where manv not in (select ma_nvien from thannhan tn where nv.manv=tn.ma_nvien)
43. Danh sách những trƣởng phòng (HONV, TENLOT, TENNV)
có tối thiểu một thân nhân.
SELECT NV.HONV,NV.TENLOT,NV.TENNV FROM NHANVIEN NV WHERE
((SELECT COUNT(*) FROM THANNHAN TN WHERE TN.MA_NVIEN=NV.MANV)>0
AND EXISTS(SELECT * FROM PHONGBAN PB WHERE PB.TRPHG=NV.MANV))
44. Tìm họ (HONV) của những trƣởng phòng chƣa có gia đình.
select DISTINCT honv from nhanvien nv join phongban pb on nv.manv=pb.trphg
where NOT EXISTS(select * from thannhan tn where tn.ma_nvien=nv.MANV AND QUANHE=N'Vợ chồng')

45. Cho biết họ tên nhân viên (HONV, TENLOT, TENNV)


có mức lƣơng trên mức lƣơng trung bình của phòng "Nghien cuu"
select nv.honv+' '+nv.TENLOT+' '+nv.tennv as 'Ho_ten_NV' from nhanvien nv
where luong > (select avg(luong) from nhanvien nv join PHONGBAN pb on nv.phg=pb.maphg where
pb.tenphg=N'Nghien cuu')
46. Cho biết tên phòng ban và họ tên trƣởng phòng của phòng ban có đông nhân viên nhất.
select tenphg, honv, tennv
from phongban pb join nhanvien nv on pb.trphg=nv.manv
where trphg in (select trphg
from phongban bp inner join nhanvien vn
on bp.maphg=vn.phg
group by trphg
having count(*) >=
(select top 1 count(*) as dem
from phongban bp inner join nhanvien vn
on bp.maphg=vn.phg
group by trphg
order by dem desc))

Cach khac
select pb.TENPHG,(select nv2.honv+' '+nv2.TENLOT+' '+nv2.tennv as 'Ho_ten_TrPhong' from
NHANVIEN nv2 where nv2.MANV=pb.TRPHG)
from PHONGBAN pb where pb.MAPHG in
(select pb1.MAPHG from phongban pb1 join NHANVIEN nv on pb1.MAPHG=nv.PHG
group by pb1.MAPHG having COUNT(nv.MANV)>= ALL(select COUNT(*) from NHANVIEN nv1 group by
nv1.PHG)
47. Cho biết danh sách các mã đề án mà nhân viên có mã là 009 chƣa làm.
select mada from dean
where mada not in (select mada from phancong where ma_nvien='009')
48. Cho biết danh sách các công việc (tên công việc)
trong đề án ‘Sản phẩm X’ mà nhân viên có mã là 009 chƣa làm.
select tencv from congviec cv where mada in
(select mada from dean where tenda='Sản phẩm X') and not exits
(select * from phancong pc where pc.ma_nvien='009' and pc.mada=cv.mada and pc.stt=cv.stt)
49. Tìm họ tên (HONV, TENLOT, TENNV) và địa chỉ (DCHI) của những
nhân viên làm việc cho một đề án ở ‘TP HCM’ nhƣng phòng ban mà họ trực thuộc lại không tọa lạc
ở thành phố ‘TP HCM’ .
select honv, tennv,diachi from nhanvien nv where manv in
(select ma_nvien from phancong pc join dean da on da.mada=pc.mada
where ddiem_da='tp.hcm' ) and phg not in
(select mapb from diadiem_phg dd where diadiem='hcm')
50. Tổng quát câu 16, tìm họ tên và địa chỉ của các nhân viên
làm việc cho một đề án ở một thành phố nhƣng phòng ban mà họ trực thuộc lại không toạ lạc
ở thành phố đó.
select honv, tennv,diachi from (nhanvien nv join diadiem_phg dd on dd.mapb=nv.phg ) join
phongban pb on pb.maph=nv.phg
where mada not in (select mada from dean da, phancong pc where
da.mada=pc.mada and nv.manv=pc.ma_nvien)

You might also like