1. Tạo và nhập dữ liệu. Quy định khóa chính, Bảng NHANVIEN (MANV),
Bảng Phongban(MAPB), Bảng PHANCONG (MANV, MADA).
create table phongban
(mapb varchar(20) not null constraint pk primary key,
tenpb varchar(20));
create table nhanvien
(manv varchar(20) not null constraint pk2 primary key,
hoten varchar(20),
nsinh datetime,
phai varchar(20),
lgncn varchar(20),
mapb varchar(20) constraint pk3 references phongban(mapb),
ghichu varchar(50));
create table phancong
(manv varchar(20) not null constraint pk4 references nhanvien(manv),
mada varchar(20) not null,
songay int,
constraint pk5 primary key (manv,mada));
2. Hiển thị bảng thanh toán tiền nhân viên gồm các thông tin: MANV,
HOTEN, NSINH, MAPB, SONGAY, LUONG. Trong đó LUONG =
LNGCN * SONGAY.
select b.manv, b.hoten, b.nsinh, b.mapb, c.songay, b.lngcn*c.songay
as luong
from nhanvien b, phancong c
where b.manv=c.manv;
3. Tạo khung nhìn có tên là DUAN để hiển thị tổng số ngày thực hiện dự án
của mỗi phòng gồm thông tin MAPB, TENPB, TONGSONGAY.
select b.mapb, sum(c.songay)as tgsongay
from nhanvien b, phancong c
where b.manv=c.manv
group by mapb;
4. Dựa vào thông tin của khung nhìn DUAN, hiển thị phòng ban có ngày thực
hiện dự án lớn nhất
select mapb, max(tgsongay)
from duan
where tgsongay=(select max(tgsongay) from duan where
duan.mapb=duan.mapb)
group by mapb;
5. Hiển thị nhân viên có số ngày thực hiện dự án cao nhất gồm các thông tin:
MANV, HOTEN, MAPB, TENPB, SONGAY.
select b.manv, b.hoten, a.mapb, a.tenpb, c.songay
from phongban a, nhanvien b,phancong c
where a.mapb=b.mapb and b.manv=c.manv and c.songay=
(select max(songay)
from nhanvien, phancong
where nhanvien.manv=phancong.manv);
6. Hiển thị các dự án và tổng số ngày thực hiện của những dự án mà không có
trưởng phòng tham gia.
select c.mada, (sum(c.songay))as tgsongay
from nhanvien b, phancong c
where b.manv=c.manv and ghichu is null
group by mada;
7. Hiển thị số lượng nam/nữ của mỗi phòng gồm các thông tin: MAPB,
TENPB, PHAI, SOLUONG.
select a.mapb, a.tenpb, b.phai, count(b.manv) as soluong
from phongban a, nhanvien b
where a.mapb=b.mapb
group by a.mapb,a.tenpb,b.phai;
8. Hiển thị nhân viên có số ngày thực hiện dự án bé hơn số ngày trung bình
của mỗi nhân viên thực hiện trong 1 dự án.
select b.manv, hoten, b.mapb, c.songay
from nhanvien b, phancong c
where b.manv=c.manv and c.songay<
(select avg(songay)
from phancong
where c.mada=phancong.mada
group by mada);
9. Hiển thị các dự án có số ngày trung bình của mỗi nhân viên thực hiện trong
dự án lớn hơn 12.
select manv ,mada ,avg(songay) as tbngay
from phancong
group by mada, manv
having avg(songay)>12;
10. Hiển thị những nhân viên sinh trong tháng 12.
select *
from nhanvien
where month(nsinh)=12;
- Xem thêm -