LAB4
LAB4
--Câu 1
SELECT e.empSSN, e.empName, e.depNum, d.depName
FROM tblDepartment d JOIN tblEmployee e ON d.mgrSSN = e.empSSN
WHERE d.depName = N'Phòng Nghiên cứu và phát triển'
--Câu 2
SELECT p.proNum, p.proName, d.depName
FROM tblProject p JOIN tblDepartment d ON d.depNum = p.depNum
WHERE d.depName = N'Phòng Nghiên cứu và phát triển'
--Câu 3
SELECT b.proNum, b.proName, d.depName
FROM tblDepartment d JOIN (SELECT * FROM tblProject p WHERE p.proName =
'ProjectB') b
ON d.depNum = b.depNum;
--Câu 4
SELECT e.empSSN, e.empName
FROM tblEmployee e JOIN (SELECT e.empSSN FROM tblEmployee e WHERE
e.empName = N'Mai Duy An') a
ON e.supervisorSSN = a.empSSN;
--Câu 5
SELECT e.empSSN, e.empName
FROM (SELECT * FROM tblEmployee e WHERE e.empName = N'Mai Duy An') b
JOIN tblEmployee e
ON e.empSSN = b.supervisorSSN;
--Câu 6
SELECT l.locNum, l.locName
FROM (SELECT * FROM tblProject WHERE proName = 'ProjectA') b JOIN
tblLocation l
ON b.locNum = l.locNum;
--Câu 7
SELECT p.proNum, p.proName
FROM (SELECT locNum FROM tblLocation WHERE locName = N'TP Hồ Chí Minh')
l JOIN tblProject p
ON l.locNum = p.locNum;
--Câu 8
SELECT d.depName as N'Người phụ thuộc', d.depBirthdate as 'Ngày sinh người
phụ thuộc', e.empName AS 'Nhân viên phụ thuộc'
FROM (SELECT * FROM tblDependent WHERE YEAR(GETDATE()) -
YEAR(depBirthdate) > 18 ) d JOIN tblEmployee e
ON d.empSSN = e.empSSN
--Câu 9
SELECT d.depName as N'Người phụ thuộc', d.depBirthdate as 'Ngày sinh người
phụ thuộc', e.empName AS 'Nhân viên phụ thuộc'
FROM (SELECT * FROM tblDependent WHERE depSex = 'M' ) d JOIN tblEmployee
e
ON d.empSSN = e.empSSN
--Câu 10
SELECT d.depNum, d.depName, l.locName
FROM (SELECT * FROM tblDepartment WHERE depName = N'Phòng Nghiên cứu
và phát triển' ) d JOIN tblDepLocation f
ON f.depNum = d.depNum JOIN tblLocation l ON f.locNum = l.locNum
--Câu 11
SELECT p.proNum, p.proName, d.depName
FROM tblProject p JOIN (SELECT * FROM tblLocation
WHERE locName = N'TP Hồ Chí Minh') l
ON p.locNum = l.locNum JOIN tblDepartment d ON p.depNum = d.depNum;
--Câu 12
SELECT e.empName AS N'Tên nhân viên', de.depName AS N'Tên người phụ
thuộc', de.depRelationship
FROM tblDependent de JOIN tblEmployee e
ON de.empSSN = e.empSSN JOIN tblDepartment d ON e.depNum = d.depNum
WHERE de.depSex = 'F' AND d.depName = N'Phòng nghiên cứu và phát triển'
--Câu 13
SELECT e.empName AS N'Tên nhân viên', de.depName AS N'Tên Người Phụ
Thuộc' , de.depRelationship
FROM tblDependent de JOIN tblEmployee e ON de.empSSN = e.empSSN JOIN
tblDepartment d ON e.depNum = d.depNum
WHERE YEAR(GETDATE()) - YEAR(de.depBirthdate) > 18 AND d.depName =
N'Phòng Nghiên cứu và phát triển'
--Câu 14
SELECT depSex AS N'Giới tính', COUNT(depSex) AS N'Số lượng' FROM
tblDependent GROUP BY depSex
--Câu 15
SELECT depRelationship, COUNT(empSSN) AS N'Số lượng' FROM tblDependent
GROUP BY depRelationship
--Câu 16
SELECT d.depName, COUNT(e.empSSN)
FROM tblDependent de JOIN tblEmployee e ON de.empSSN = e.empSSN JOIN
tblDepartment d ON d.depNum = e.depNum
GROUP BY d.depName
--Câu 17
SELECT d.depName, COUNT(e.empSSN) AS N'Số lượng người phụ thuộc'
FROM tblDependent de JOIN tblEmployee e ON de.empSSN = e.empSSN JOIN
tblDepartment d ON d.depNum = e.depNum
GROUP BY d.depName HAVING COUNT(e.empSSN) = (SELECT MIN(a.soLuong)
FROM (SELECT d.depName, COUNT(e.empSSN) AS soLuong
FROM tblDependent de JOIN tblEmployee e ON de.empSSN = e.empSSN JOIN
tblDepartment d ON d.depNum = e.depNum
GROUP BY d.depName) a)
--Câu 18
SELECT d.depName, COUNT(e.empSSN) AS N'Số lượng người phụ thuộc'
FROM tblDependent de JOIN tblEmployee e ON de.empSSN = e.empSSN JOIN
tblDepartment d
ON d.depNum = e.depNum GROUP BY d.depName
HAVING COUNT(e.empSSN) = (SELECT MAX(a.soLuong)
FROM (SELECT d.depName, COUNT(e.empSSN) AS soLuong
FROM tblDependent de JOIN tblEmployee e ON de.empSSN = e.empSSN JOIN
tblDepartment d
ON d.depNum = e.depNum GROUP BY d.depName) a)
--Câu 19
SELECT e.empSSN, e.empName, a.soGio AS N'Tổng số giờ' FROM tblEmployee e
JOIN (
SELECT e.empSSN, SUM(w.workHours) AS soGio
FROM tblEmployee e JOIN tblWorksOn w ON e.empSSN = w.empSSN JOIN
tblDepartment d ON e.depNum = d.depNum GROUP BY e.empSSN
) a ON e.empSSN = a.empSSN
--Câu 20
SELECT p.depNum, d.depName, SUM(soGio) AS N'Tổng số giờ' FROM tblProject p
JOIN (SELECT proNum, SUM(workHours) as soGio FROM tblWorksOn GROUP BY
proNum) a
ON p.proNum = a.proNum JOIN tblDepartment d ON p.depNum = d.depNum
GROUP BY p.depNum, d.depName
--Câu 21
SELECT e.empSSN, e.empName, b.soGio
FROM tblEmployee e JOIN (SELECT empSSN, SUM(workHours) as soGio
FROM tblWorksOn GROUP BY empSSN
HAVING SUM(workHours) = (SELECT MIN(a.soGio) as soGioMin
FROM (SELECT empSSN, SUM(workHours) as soGio FROM tblWorksOn GROUP
BY empSSN) a)) b
ON e.empSSN = b.empSSN
--Câu 22
SELECT e.empSSN, e.empName, b.soGio
FROM tblEmployee e JOIN (SELECT empSSN, SUM(workHours) as soGio
FROM tblWorksOn GROUP BY empSSN
HAVING SUM(workHours) = (SELECT MAX(a.soGio) as soGioMin
FROM (SELECT empSSN, SUM(workHours) as soGio FROM tblWorksOn GROUP
BY empSSN) a)) b
ON e.empSSN = b.empSSN
--Câu 23
SELECT e.empSSN, e.empName, d.depName
FROM tblEmployee e JOIN (SELECT e.empSSN, COUNT(e.empSSN) AS
soLanThamGiaDuAn
FROM tblEmployee e JOIN tblWorksOn w
ON e.empSSN = w.empSSN
GROUP BY e.empSSN HAVING COUNT(e.empSSN) = 1) b ON e.empSSN =
b.empSSN
JOIN tblDepartment d ON d.depNum = e.depNum
--Câu 24
SELECT e.empSSN, e.empName, d.depName
FROM tblEmployee e JOIN (SELECT e.empSSN, COUNT(e.empSSN) AS
soLanThamGiaDuAn
FROM tblEmployee e JOIN tblWorksOn w ON e.empSSN = w.empSSN
GROUP BY e.empSSN HAVING COUNT(e.empSSN) = 2) b
ON e.empSSN = b.empSSN JOIN tblDepartment d ON d.depNum = e.depNum
--Câu 25
SELECT e.empSSN, e.empName, d.depName
FROM tblEmployee e JOIN (SELECT e.empSSN, COUNT(e.empSSN) AS
soLanThamGiaDuAn
FROM tblEmployee e JOIN tblWorksOn w ON e.empSSN = w.empSSN
GROUP BY e.empSSN HAVING COUNT(e.empSSN) >= 2) b
ON e.empSSN = b.empSSN JOIN tblDepartment d ON d.depNum = e.depNum
--Câu 26
SELECT p.proNum, p.proName, b.soLuongThanhVien AS N'Số lượng thành viên'
FROM tblProject p JOIN (SELECT proNum, COUNT(empSSN) AS
soLuongThanhVien
FROM tblWorksOn GROUP BY proNum) b ON b.proNum = p.proNum
--Câu 27
SELECT p.proNum, p.proName, d.thoiGian AS N'Tổng số giờ làm việc'
FROM tblProject p JOIN (SELECT proNum, SUM(workHours) AS thoiGian
FROM tblWorksOn GROUP BY proNum) d ON p.proNum = d.proNum
--Câu 28
SELECT p.proNum, p.proName, a.soLuongNhanVien
FROM (SELECT proNum, COUNT(empSSN) AS soLuongNhanVien
FROM tblWorksOn GROUP BY proNum) a JOIN tblProject p ON p.proNum =
a.proNum
WHERE a.soLuongNhanVien = (SELECT MIN(soLuongNhanVien)
FROM (SELECT proNum, COUNT(empSSN)AS soLuongNhanVien FROM
tblWorksOn GROUP BY proNum) a)
--Câu 29
SELECT p.proNum, p.proName, a.soLuongNhanVien FROM (SELECT proNum,
COUNT(empSSN) AS soLuongNhanVien
FROM tblWorksOn GROUP BY proNum) a JOIN tblProject p ON p.proNum =
a.proNum
WHERE a.soLuongNhanVien = (SELECT MAX(soLuongNhanVien)
FROM (SELECT proNum, COUNT(empSSN)AS soLuongNhanVien FROM
tblWorksOn GROUP BY proNum) a)
--Câu 30
SELECT p.proNum, p.proName, d.thoiGian AS N'Tổng số giờ làm'
FROM (SELECT proNum, SUM(workHours) AS thoiGian
FROM tblWorksOn GROUP BY proNum) d JOIN tblProject p ON p.proNum =
d.proNum
WHERE d.thoiGian = (SELECT MIN(thoiGian)
FROM (SELECT proNum, SUM(workHours) AS thoiGian FROM tblWorksOn
GROUP BY proNum) a)
--Câu 31
SELECT p.proNum, p.proName, d.thoiGian AS N'Tổng số giờ làm'
FROM (SELECT proNum, SUM(workHours) AS thoiGian
FROM tblWorksOn GROUP BY proNum) d JOIN tblProject p ON p.proNum =
d.proNum
WHERE d.thoiGian = (SELECT MAX(thoiGian) FROM (SELECT proNum,
SUM(workHours) AS thoiGian FROM tblWorksOn GROUP BY proNum) a)
--Câu 32
SELECT l.locName, COUNT(depNum) AS N'Số lượng phòng ban'
FROM tblDepLocation d JOIN tblLocation l ON d.locNum = l.locNum GROUP BY
l.locName
--Câu 33
SELECT l.depNum, l.depName, COUNT(d.locNum) AS N'Số lượng chỗ làm'
FROM tblDepLocation d JOIN tblDepartment l ON d.depNum = l.depNum GROUP
BY l.depNum, l.depName
--Câu 34
SELECT l.depNum, l.depName, COUNT(d.locNum) AS N'Số lượng chỗ làm'
FROM tblDepLocation d JOIN tblDepartment l ON d.depNum = l.depNum GROUP
BY l.depNum, l.depName HAVING COUNT(d.locNum) = (SELECT
MAX(d.soLuongChoLam)
FROM (SELECT COUNT(locNum) as soLuongChoLam FROM tblDepLocation d
GROUP BY depNum) d)
--Câu 35
SELECT l.depNum, l.depName, COUNT(d.locNum) AS N'Số lượng chỗ làm'
FROM tblDepLocation d JOIN tblDepartment l ON d.depNum = l.depNum GROUP
BY l.depNum, l.depName
HAVING COUNT(d.locNum) = (SELECT MIN(d.soLuongChoLam)
FROM (SELECT COUNT(locNum) as soLuongChoLam FROM tblDepLocation d
GROUP BY depNum) d)
--Câu 36
SELECT l.locName, COUNT(depNum) AS N'Số lượng phòng ban'
FROM tblDepLocation d JOIN tblLocation l ON d.locNum = l.locNum GROUP BY
l.locName
HAVING COUNT(depNum) = (SELECT MAX(a.soLuongPhongBan)
FROM (SELECT locNum, COUNT(depNum) As soLuongPhongBan FROM
tblDepLocation GROUP BY locNum) a)
--Câu 37
SELECT l.locName, COUNT(depNum) AS N'Số lượng phòng ban' FROM
tblDepLocation d JOIN tblLocation l ON d.locNum = l.locNum GROUP BY l.locName
HAVING COUNT(depNum) = (SELECT MIN(a.soLuongPhongBan) FROM (SELECT
locNum, COUNT(depNum) As soLuongPhongBan FROM tblDepLocation GROUP
BY locNum) a)
--Câu 38
SELECT e.empSSN, e.empName, COUNT(e.empSSN) AS N'Số lượng người phụ
thuộc'
FROM tblDependent de JOIN tblEmployee e ON e.empSSN = de.empSSN GROUP
BY e.empSSN, e.empName
HAVING COUNT(e.empSSN) = (SELECT MIN(a.sl)
FROM (SELECT COUNT(e.empSSN) AS sl FROM tblDependent de JOIN
tblEmployee e ON e.empSSN = de.empSSN GROUP BY de.empSSN) a)
--Câu 39
SELECT e.empSSN, e.empName, COUNT(e.empSSN) AS N'Số lượng người phụ
thuộc'
FROM tblDependent de JOIN tblEmployee e ON e.empSSN = de.empSSN GROUP
BY e.empSSN, e.empName
HAVING COUNT(e.empSSN) = (SELECT MAX(a.sl)
FROM (SELECT COUNT(e.empSSN) AS sl FROM tblDependent de JOIN
tblEmployee e ON e.empSSN = de.empSSN GROUP BY de.empSSN) a)
--Câu 40
SELECT e.empSSN, e.empName, d.depName
FROM tblEmployee e LEFT JOIN tblDependent de ON e.empSSN = de.empSSN
JOIN tblDepartment d
ON d.depNum = e.depNum WHERE de.empSSN IS NULL
--Câu 41
SELECT d.depNum, d.depName FROM tblDepartment d WHERE depNum !=
ALL(SELECT DISTINCT e.depNum
FROM tblEmployee e LEFT JOIN (SELECT e.empSSN FROM tblEmployee e LEFT
JOIN tblDependent de ON e.empSSN = de.empSSN
WHERE de.empSSN IS NULL) a ON e.empSSN = a.empSSN WHERE a.empSSN
IS NULL)
--Câu 42
SELECT e.empSSN, e.empName, d.depName
FROM tblEmployee e LEFT JOIN tblWorksOn w ON e.empSSN = w.empSSN JOIN
tblDepartment d ON e.depNum = d.depNum WHERE w.empSSN IS NULL
--Câu 43
SELECT depNum, depName FROM tblDepartment WHERE depNum != ALL
(SELECT DISTINCT d.depNum
FROM tblWorksOn w JOIN tblEmployee e ON e.empSSN = w.empSSN JOIN
tblDepartment d ON e.depNum = d.depNum)
--Câu 44
SELECT d.depNum, d.depName FROM tblDepartment d WHERE d.depNum !=
(SELECT DISTINCT d.depNum
FROM tblEmployee e JOIN tblWorksOn w ON w.empSSN = e.empSSN JOIN
tblDepartment d
ON e.depNum = d.depNum JOIN tblProject p ON p.depNum = d.depNum
WHERE p.proName = N'ProjectA')
--Câu 45
SELECT d.depNum, d.depName, a.soLuong AS N'Số lượng dự án'
FROM (SELECT depNum, COUNT(proNum) as soLuong FROM tblProject GROUP
BY depNum) a JOIN tblDepartment d ON a.depNum = d.depNum
--Câu 46
SELECT d.depNum, d.depName, COUNT(proNum) AS N'Số lượng dự án'
FROM tblProject p JOIN tblDepartment d ON p.depNum = d.depNum GROUP BY
d.depNum, d.depName
HAVING COUNT(proNum) = (SELECT MIN(b.soLuong) FROM (SELECT
COUNT(proNum) as soLuong FROM tblProject GROUP BY depNum) b)
--Câu 47
SELECT d.depNum, d.depName, COUNT(proNum) AS N'Số lương dự án'
FROM tblProject p JOIN tblDepartment d ON p.depNum = d.depNum GROUP BY
d.depNum, d.depName
HAVING COUNT(proNum) = (SELECT MAX(b.soLuong) FROM (SELECT
COUNT(proNum) as soLuong FROM tblProject GROUP BY depNum) b)
--Câu 48
SELECT a.depNum, a.depName, a.sl AS N'Số lượng nhân viên' , p.proName
FROM tblProject p JOIN(SELECT d.depNum, d.depName, COUNT(e.empSSN) AS
sl FROM (SELECT DISTINCT empSSN
FROM tblWorksOn) w JOIN tblEmployee e ON w.empSSN = e.empSSN JOIN
tblDepartment d ON d.depNum = e.depNum
GROUP BY d.depNum, d.depName HAVING COUNT(e.empSSN) > 5) a ON
p.depNum = a.depNum
--Câu 49
SELECT e.empSSN, e.empName
FROM tblEmployee e JOIN tblDepartment d ON e.depNum = d.depNum
WHERE d.depName = N'Phòng nghiên cứu và phát triển' AND e.supervisorSSN IS
NULL
--Câu 50
SELECT a.empSSN, a.empName, COUNT(workHours) AS N'Tổng số giờ làm'
FROM (SELECT e.empSSN, e.empName FROM tblEmployee e
WHERE e.supervisorSSN IS NULL) a JOIN tblWorksOn w ON w.empSSN =
a.empSSN GROUP BY a.empSSN, a.empName
--Câu 51
SELECT a.empSSN, a.empName, a.sl AS N'Số lượng người phụ thuộc' ,
e.workHours FROM (SELECT empSSN, SUM(workHours) AS workHours
FROM tblWorksOn GROUP BY empSSN) e JOIN (SELECT e.empSSN,
e.empName, COUNT(e.empSSN) AS sl
FROM tblDependent de JOIN tblEmployee e ON e.empSSN = de.empSSN GROUP
BY e.empSSN, e.empName
HAVING COUNT(e.empSSN) >= 3) a ON e.empSSN = a.empSSN
--Câu 52
SELECT e.empSSN, e.empName, SUM(workHours) AS 'Tổng số giờ làm' FROM
(SELECT * FROM tblEmployee
WHERE empName = N'Mai Duy An') a JOIN tblEmployee e ON e.supervisorSSN =
a.empSSN JOIN tblWorksOn w ON w.empSSN = e.empSSN GROUP BY
e.empSSN,e.empName