0% found this document useful (0 votes)
49 views

LAB4

DBI202
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
49 views

LAB4

DBI202
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 9

use FUH_COMPANY

SELECT * FROM tblDepartment;


SELECT * FROM tblEmployee;
SELECT * FROM tblProject;
SELECT * FROM tblDependent;
SELECT * FROM tblLocation;
SELECT * FROM tblWorksOn;
SELECT * FROM tblDepLocation;

--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

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 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

You might also like