2. Ràng buô ̣c trên nhiều quan
4.1 Yêu cầu về quản lý nhân sự 25.
b.1.3 Lâ ̣p danh sách tính tổng số nhân viên của mô ̣t bô ̣ phâ ̣n, danh sách gồm mã bô ̣ phâ ̣n, tên bô ̣ phâ ̣n, tổng số nhân viên.
SELECT BP.MaBP, BP.TenBP, COUNT(NV.MaNV) AS TongSoNhanVien
FROM NhanVien AS NV INNER JOIN
BoPhan AS BP ON NV.MaBP = BP.MaBP GROUP BY BP.MaBP, BP.TenBP
Kết quả:
b.1.4 Lâ ̣p danh sách về số lượng hàng, tổng giá tri ̣ hàng hóa mà mỗi nhân viên ở bô ̣ phâ ̣n bán hàng bán được trong năm 2008. Danh sách gồm có mã nhân viên, ho ̣ tên, ngày sinh, số lượng hàng bán được, tổng giá tri ̣ bán được. Sắp xếp theo tổng giá tri ̣ giảm dần.
SELECT NV.MaNV, NV.HoTen, SUM(CTHD.SoLuong) AS
TongSoLuongBan, SUM(CTHD.SoLuong*CTHD.DonGia) AS TongGiaTri
FROM NhanVien AS NV INNER JOIN HoaDon AS HD ON NV.MaNV = HD.MaNV INNER JOIN ChiTietHoaDon AS CTHD ON HD.MaHD = CTHD.MaHD
WHERE (NV.MaBP = 'BP1' AND YEAR(HD.NgayLap)= '2008') GROUP BY NV.MaNV, NV.HoTen
ORDER BY TongGiaTri DESC
b.1.6 Tính đô ̣ tuổi trung bình của nhân viên trong công ty. SELECT TongTuoi / TongNhanVien AS TuoiTrungBinh
FROM (SELECT SUM(DATEDIFF(Year, NgaySinh, { fn NOW() })) AS TongTuoi, COUNT(MaNV) AS TongNhanVien FROM NhanVien AS NV)
Kết quả:
b.1.7 Lâ ̣p danh sách nhân viên bán hàng có doanh thu nhiều nhất. Danh sách gồm MaNV, HoTen, TongSoLuong, TongGiaTri
SELECT MaNV, HoTen, TongSoLuong, TongGiaTri
FROM (SELECT NV.MaNV, NV.HoTen, SUM(CTHD.SoLuong) AS TongSoLuong, SUM(CTHD.SoLuong * CTHD.DonGia) AS TongGiaTri
FROM NhanVien AS NV INNER JOIN
HoaDon AS HD ON NV.MaNV = HD.MaNV INNER JOIN ChiTietHoaDon AS CTHD ON HD.MaHD = CTHD.MaHD WHERE (NV.MaBP = 'BP1')
GROUP BY NV.MaNV, NV.HoTen) WHERE (TongGiaTri >= ALL
(SELECT SUM(CTHD.SoLuong * CTHD.DonGia) AS TongGiaTri FROM NhanVien AS NV INNER JOIN
HoaDon AS HD ON NV.MaNV = HD.MaNV INNER JOIN ChiTietHoaDon AS CTHD ON HD.MaHD = CTHD.MaHD WHERE (NV.MaBP = 'BP1')
GROUP BY NV.MaNV, NV.HoTen))
b.1.8 Thống kê về tỷ lê ̣ nam, nữ của công ty.
SELECT (SELECT COUNT(MaNV) FROM NhanVien
(SELECT COUNT(MaNV)
FROM dbo.NhanVien AS NhanVien_3) AS TyLeNam, (SELECT COUNT(MaNV) AS Expr1
FROM dbo.NhanVien AS NhanVien_2 WHERE (GioiTinh = 1)) * 100 /
(SELECT COUNT(MaNV)
FROM dbo.NhanVien AS NhanVien_1) AS TyLeNu
Kếtquả:
b.1.9 Lâ ̣p danh sách top 5 nhân viên có mang về nhiều doanh thu nhất cho công ty.
SELECT TOP (5) MaNV, HoTen, TongSoLuongBan, TongGiaTriBan FROM (SELECT NV.MaNV, NV.HoTen, SUM(CTHD.SoLuong) AS
TongSoLuongBan, SUM(CTHD.SoLuong * CTHD.DonGia) AS TongGiaTriBan
FROM NhanVien AS NV INNER JOIN
HoaDon AS HD ON NV.MaNV = HD.MaNV INNER JOIN ChiTietHoaDon AS CTHD ON HD.MaHD = CTHD.MaHD WHERE (NV.MaBP = 'BP1') AND (YEAR(HD.NgayLap) = '2008') GROUP BY NV.MaNV, NV.HoTen)
ORDER BY TongGiaTriBan DESC
Kết quả: