Cho cơ sở dữ liệu như sau:
chucvu (macv char(5), tencv char(25))
thanhpho (matp char(5), tentp char(25))
phicongtac (macv char(5), matp char(5), phi_1_ngay int)
nhanvien (manv char(5), tennv char(25), macv char(5))
dotcongtac (madot int, tp_den char(5), songay int, ngaydi datetime)
thamgiacongtac (madot int, manv char(5))
===========================================
Thực hiện các câu truy vấn sau:
1. Liệt kê danh sách các mã đợt, ngày đi mà đến thành phố có tên là ‘Hồ Chí Minh’ với số
ngày đi nhiều hơn 7 ngày.
2. Liệt kê danh sách các mã nhân viên, tên nhân viên mà có tham gia vào các đợt công tác đi
trong tháng 2 năm 2009 đến thành phố có tên là ‘Hà Nội’.
3. Liệt kê danh sách các mã nhân viên, tên nhân viên mà chưa từng tham gia chuyến công
tác nào.
4. Liệt kê danh sách các mã nhân viên, tên nhân viên mà chưa từng tham gia chuyến công
tác nào mà xuất phát trong năm 2008.
5. Liệt kê danh sách các nhân viên, tên nhân viên mà tham gia ít nhất 2 đợt công tác có số
ngày đi hơn 5 ngày trong năm 2008.
6. Liệt kê danh sách gồm mã đợt, số ngày đi, ngày đi, tổng chi phí chi cho đợt công tác đó
============================
cái đề mới hình như có 10 câu: mình làm theo đề mới nha! có gì các bạn lấy đề ra xem, mình lười đánh vào lắm.
à, mình đẳng cấp gà, ai thấy sai chỗ nào thì reply+ sửa lại luôn nha!
============================
giải:
câu 1:
select dot.madot, dot.ngay_di
from dotcongtac1 as dot inner join thanhpho1 as tp
on dot.tp_den = tp.matp
where dot.tp_den = 'hcm'
and dot.so_ngay >= 7
=====
câu 2:
select *
from ( thamgiacongtac1 as tham inner join nhanvien1 as nv
on tham.manv = nv.manv inner join dotcongtac1 as dot
on tham.madot = dot.madot
)
where DATEPART (YEAR,ngay_di) = 2009
or DATEPART (YEAR,ngay_di) = 2008
=====
câu 3:
select *
from ( thamgiacongtac1 as tham inner join nhanvien1 as nv
on tham.manv = nv.manv inner join dotcongtac1 as dot
on tham.madot = dot.madot
)
where DATEPART (YEAR,ngay_di) = 2009
and DATEPART (MONTH,ngay_di) = 2
and tp_den = 'hn'
=====
câu 4:
select dot.tp_den,dot.ngay_di
from dotcongtac1 as dot
where dot.tp_den not in
(select dot.tp_den
from dotcongtac1 as dot
where DATEPART(QUARTER,dot.ngay_di) = 1
or DATEPART(YEAR,dot.ngay_di) = 1)
====
câu 5:
select cv.macv, cv.tencv, COUNT(nv.mavc) as soluong
from ( nhanvien1 as nv inner join chucvu1 as cv
On nv.mavc = cv.macv)
group by cv.macv,cv.tencv
====
câu 6:
select nv.tennv, nv.manv
from nhanvien1 as nv
where nv.manv not in(
select nv.manv
from (nhanvien1 as nv inner join thamgiacongtac1 as tham
on nv.manv = tham.manv)
group by nv.manv)
====
câu 7:
select nv.tennv, nv.manv
from nhanvien1 as nv
where nv.manv not in(
select nv.manv
from (nhanvien1 as nv inner join thamgiacongtac1 as tham
on nv.manv = tham.manv inner join dotcongtac1 as dot
on tham.madot = dot.madot)
where DATEPART(YEAR,dot.ngay_di)= 2008
group by nv.manv)
====
câu 8:
select nv.manv,nv.tennv , COUNT(nv.manv) as tong_lan
from (
nhanvien1 as nv inner join chucvu1 as cv
on nv.mavc= cv.macv inner join phicongtac1 as phi
on nv.mavc = phi.macv inner join thanhpho1 as tp
on phi.matp = tp.matp
)
where tp.tentp = 'ho chi minh'
group by nv.manv,nv.tennv
====
câu 10:
with T2 as(
select dot.madot,dot.so_ngay,dot.ngay_di,phi.phi_1_ngay*dot.so_ngay as chi_phi
from (nhanvien1 as nv inner join thamgiacongtac1 as tham
on nv.manv = tham.manv inner join dotcongtac1 as dot
on tham.madot = dot.madot inner join chucvu1 as cv
on nv.mavc = cv.macv inner join phicongtac1 as phi
on phi.macv = cv.macv)
)
select madot, so_ngay, ngay_di, SUM(chi_phi)as tongcong
from T2
Group by madot, so_ngay, ngay_di
======================
chucvu (macv char(5), tencv char(25))
thanhpho (matp char(5), tentp char(25))
phicongtac (macv char(5), matp char(5), phi_1_ngay int)
nhanvien (manv char(5), tennv char(25), macv char(5))
dotcongtac (madot int, tp_den char(5), songay int, ngaydi datetime)
thamgiacongtac (madot int, manv char(5))
===========================================
Thực hiện các câu truy vấn sau:
1. Liệt kê danh sách các mã đợt, ngày đi mà đến thành phố có tên là ‘Hồ Chí Minh’ với số
ngày đi nhiều hơn 7 ngày.
2. Liệt kê danh sách các mã nhân viên, tên nhân viên mà có tham gia vào các đợt công tác đi
trong tháng 2 năm 2009 đến thành phố có tên là ‘Hà Nội’.
3. Liệt kê danh sách các mã nhân viên, tên nhân viên mà chưa từng tham gia chuyến công
tác nào.
4. Liệt kê danh sách các mã nhân viên, tên nhân viên mà chưa từng tham gia chuyến công
tác nào mà xuất phát trong năm 2008.
5. Liệt kê danh sách các nhân viên, tên nhân viên mà tham gia ít nhất 2 đợt công tác có số
ngày đi hơn 5 ngày trong năm 2008.
6. Liệt kê danh sách gồm mã đợt, số ngày đi, ngày đi, tổng chi phí chi cho đợt công tác đó
============================
cái đề mới hình như có 10 câu: mình làm theo đề mới nha! có gì các bạn lấy đề ra xem, mình lười đánh vào lắm.
à, mình đẳng cấp gà, ai thấy sai chỗ nào thì reply+ sửa lại luôn nha!
============================
giải:
câu 1:
select dot.madot, dot.ngay_di
from dotcongtac1 as dot inner join thanhpho1 as tp
on dot.tp_den = tp.matp
where dot.tp_den = 'hcm'
and dot.so_ngay >= 7
=====
câu 2:
select *
from ( thamgiacongtac1 as tham inner join nhanvien1 as nv
on tham.manv = nv.manv inner join dotcongtac1 as dot
on tham.madot = dot.madot
)
where DATEPART (YEAR,ngay_di) = 2009
or DATEPART (YEAR,ngay_di) = 2008
=====
câu 3:
select *
from ( thamgiacongtac1 as tham inner join nhanvien1 as nv
on tham.manv = nv.manv inner join dotcongtac1 as dot
on tham.madot = dot.madot
)
where DATEPART (YEAR,ngay_di) = 2009
and DATEPART (MONTH,ngay_di) = 2
and tp_den = 'hn'
=====
câu 4:
select dot.tp_den,dot.ngay_di
from dotcongtac1 as dot
where dot.tp_den not in
(select dot.tp_den
from dotcongtac1 as dot
where DATEPART(QUARTER,dot.ngay_di) = 1
or DATEPART(YEAR,dot.ngay_di) = 1)
====
câu 5:
select cv.macv, cv.tencv, COUNT(nv.mavc) as soluong
from ( nhanvien1 as nv inner join chucvu1 as cv
On nv.mavc = cv.macv)
group by cv.macv,cv.tencv
====
câu 6:
select nv.tennv, nv.manv
from nhanvien1 as nv
where nv.manv not in(
select nv.manv
from (nhanvien1 as nv inner join thamgiacongtac1 as tham
on nv.manv = tham.manv)
group by nv.manv)
====
câu 7:
select nv.tennv, nv.manv
from nhanvien1 as nv
where nv.manv not in(
select nv.manv
from (nhanvien1 as nv inner join thamgiacongtac1 as tham
on nv.manv = tham.manv inner join dotcongtac1 as dot
on tham.madot = dot.madot)
where DATEPART(YEAR,dot.ngay_di)= 2008
group by nv.manv)
====
câu 8:
select nv.manv,nv.tennv , COUNT(nv.manv) as tong_lan
from (
nhanvien1 as nv inner join chucvu1 as cv
on nv.mavc= cv.macv inner join phicongtac1 as phi
on nv.mavc = phi.macv inner join thanhpho1 as tp
on phi.matp = tp.matp
)
where tp.tentp = 'ho chi minh'
group by nv.manv,nv.tennv
====
câu 10:
with T2 as(
select dot.madot,dot.so_ngay,dot.ngay_di,phi.phi_1_ngay*dot.so_ngay as chi_phi
from (nhanvien1 as nv inner join thamgiacongtac1 as tham
on nv.manv = tham.manv inner join dotcongtac1 as dot
on tham.madot = dot.madot inner join chucvu1 as cv
on nv.mavc = cv.macv inner join phicongtac1 as phi
on phi.macv = cv.macv)
)
select madot, so_ngay, ngay_di, SUM(chi_phi)as tongcong
from T2
Group by madot, so_ngay, ngay_di
======================