HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU SQL SERVER
E. Viết 25 câu hỏi về Select trong đó có sử dụng: (lưu ý viết cả câu hỏi và câu trả lời)
Hàm day, month, year, datediff, getdate
Hàm Count; Hàm max ; min ; Sum ;có Group by ; có Order by
Truy vấn trên một bảng có where ; Truy vấn trên nhiều bảng có where
Sử dụng Select lồng nhau; …
1. Đưa ra mã nhân viên, họ tên, ngày sinh của nhân viên nữ sinh vào quý III
select manv,hodem,ten ngaysinh, from nhanvien
where month(ngaysinh) in (7,8 9, )
and gioitinh 0=
2.Đưa ra mã nhân viên, họ đệm, tên, trình độ học vấn những nhân viên sinh sau năm 1997 có trình độ đại học
select manv,hodem,ten ngaysinh tentdhv, , from nhanvien,trinhdohocvan
where nhanvien.matdhv=trinhdohocvan matdhv. and year(ngaysinh 1997)>
and tentdhv=N'đại học'
3.Đưa ra mã nhân viên họ đệm, tên tuổi của nhân viên thuộc phòng kế toán, ,
select manv,hodem,ten,datediff(yyyy ngaysinh,, getdate())as [Tuổi]
from nhanvien,phongban
where nhanvien.mapb=phongban.mapb
and tenphongban=N'Kế toán'
4. Đưa ra mã nhân viên, họ đệm, tên những nhân viên có sinh nhật trước ngày 20 07 1994/ /
select manv,hodem,ten ngaysinh, from nhanvien
where year(ngaysinh 1994)<
or(year(ngaysinh 1994 )= and month(ngaysinh 7)< ) or( year(ngaysinh 1994 )= and month(ngaysinh 7)=
and day(ngaysinh 20)< )
5. Đưa ra số lượng nhân viên mỗi phòng ban
select tenphongban,count(*)as[Số nhân viên]
from nhanvien,phongban
where nhanvien.mapb=phongban.mapb
group by tenphongban
6.Đưa ra mã nhân viên, họ đệm, tên của từng nhân viên và sắp xếp theo chiều lương giảm dần
select manv, hodem, ten, luongcoban hesoluong hesophucap*( + )as[Lương tháng]
from nhanvien,phongban luong,
where luong.bacluong nhanvien bacluong= .
and phongban mapb=nhanvien.mapb.
order by luongcoban*(hesoluong hesophucap + )DESC
7.Đưa ra mã nhân viên, họ đệm, tên, lương của nhân viên có lương cao nhất công ty
select manv, hodem, ten, luongcoban hesoluong+hesophucap)*( as[Lương]
from nhanvien,luong
where luong.bacluong nhanvien bacluong= .
and luongcoban hesoluong hesophucap*( + )
=(select max(luongcoban hesoluong+hesophucap*( )) from nhanvien,luong
where luong.bacluong nhanvien bacluong= . )
8.Đưa ra mã nhân viên họ đệm, tên, lương của nhân viên có lương thấp nhất phòng , kế toán
select manv, hodem, ten, luongcoban hesoluong+hesophucap)*( as[Lương]
from nhanvien,luong
where luong.bacluong nhanvien bacluong= .
and luongcoban hesoluong hesophucap*( + )
=(select min(luongcoban hesoluong+hesophucap*( )) from nhanvien,luong,phongban
where luong bacluong . = nhanvien bacluong.
and phongban mapb=nhanvien.mapb. and tenphongban=N'kế toán')
9.Đưa ra mã nhân viên họ tên lương của nhân viên có lương mức lương trung , , <
bình của cả công ty
select manv,hodem,ten luongcoban hesoluong hesophucap [Lương tháng], *( + )as from nhanvien,luong
where luong.bacluong nhanvien bacluong= .
and luongcoban hesoluong hesophucap*( + )
<(select avg(luongcoban hesoluong hesophucap*( + )) from nhanvien,luong
where nhanvien.bacluong luong.bacluong= )
10. Đưa ra tổng lương mà công ty chi trả cho mỗi phòng ban
select tenphongban,sum(luongcoban hesoluong hesophucap*( + ))as[Tổng lương]
from nhanvien,luong,phongban
where nhanvien.bacluong luong.bacluong= and nhanvien mapb=phongban.mapb. group by tenphongban
11.Đưa mã nhân viên, họ đệm, tên, phòng ban, địa chỉ của nhân viên có chức vụ là nhân viên địa chỉ ở Quảng Ninh và thuộc phòng phát triển thị trường,
select manv,hodem,tenphongban,tenchucvu diachi, from nhanvien,phongban chucvu,
where nhanvien.macv chucvu macv= . and nhanvien mapb=phongban.mapb. and diachi like N'%Quảng Ninh' and tenphongban=N'Phát triển thị trường' and tenchucvu=N'nhân viên'
12 Đưa ra họ tên của từng trưởng phòng của từng phòng ban trong công ty
select manv, hodem ten,tenphongban, from nhanvien,chucvu phongban, where nhanvien.macv chucvu macv= .
and nhanvien mapb=phongban.mapb. and tenchucvu=N'trưởng phòng'
13. Đưa ra họ tên và chuyên ngành của những nhân viên có trình độ học vấn đại học
select hodem,ten chuyennganh, from nhanvien,trinhdohocvan
where nhanvien.matdhv trinhdohocvan= .matdhv and tentdhv=N'đại học'
14. Đưa ra họ tên trưởng phòng tên phòng ban của nhân viên có mã nhân viên là , nv003
select hodem,ten tenphongban, from nhanvien,phongban,chucvu where nhanvien.mapb phongban mapb= . and nhanvien.macv chucvu= .macv and tenchucvu=N'trưởng phòng'
and nhanvien.mapb=(select nhanvien.mapb from nhanvien where manv='nv003') 15. Đưa ra số lượng nhân viên theo trình độ học vấn
select tentdhv,count(*)as[Số nhân viên]
from nhanvien,trinhdohocvan
where nhanvien.matdhv=trinhdohocvan matdhv. group by tentdhv
16.Đưa ra họ tên những nhân viên những nhân viên có họ là Hoàng
select hodem,ten from nhanvien
where hodem like N'Hoàng%' 17.Đưa ra tổng lương của nhân viên
select sum(luongcoban hesoluong hesophucap*( + )) [Tổng lương]as from nhanvien,luong
where nhanvien.bacluong luong.bacluong=
18.Đưa ra số lượng nhân viên nam và số lượng nhân viên nữ select gioitinh ,count(*)as[số nhân viên]
from nhanvien group by gioitinh
19.Đưa ra họ tên, phòng ban của nhân viên có lương >15 000 000 select hodem, ten tenphongban,
from nhanvien,phongban luong,
where nhanvien.bacluong luong.bacluong = and nhanvien mapb phongban. = .mapb and
luongcoban hesoluong hesophucap 15000000*( + )>
20. Mức lương trung bình của một người ở mỗi phòng ban select tenphongban,avg(luongcoban hesoluong hesophucap*( + )) from nhanvien,phongban luong,
where nhanvien.mapb=phongban.mapb and nhanvien bacluong luong bacluong. = . group by tenphongban
21.Đưa ra họ tên nhân viên có mức lương KHÔNG nằm trong khoảng 10 000 000 đến 15 000 000
select hodem,ten from nhanvien,luong
where nhanvien.bacluong luong.bacluong=
and luongcoban hesoluong hesophucap *( + ) not between 10000000 and 15000000 22. Đưa ra họ tên những nhân viên có tên bắt đầu bằng H, kí tự thứ 3 là n
select hodem, ten from nhanvien where ten like N'H_n%'
23.Đưa ra số lượng nhân viên nam có quê ở Hải Dương
select hodem,ten from nhanvien
where diachi like N'%Hải Dương' and gioitinh='1'
24.Đưa ra những nhân viên có sinh nhật vào tháng 7 hoặc tháng 8 ở phòng kế toán
select hodem,ten from nhanvien,phongban
where nhanvien.mapb=phongban.mapb and month(ngaysinh) in( , )7 8
and tenphongban =N'Kế toán'
25.Đưa ra họ tên, tuổi nhân viên có tuổi >30
select hodem,ten,datediff(yyyy,ngaysinh,getdate())as [Tuổi]
from nhanvien
where datediff(yyyy,ngaysinh,getdate()) >30