Professional Documents
Culture Documents
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')
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)