Professional Documents
Culture Documents
//Auteur: CHAOULID
//Copyright: Exelib.net
//**D'autres solutions sont possibles**//
//Partie thorique : Voir Cours
//Partie Pratique:
//A
//1
create database EFM_SGBD_1
go
use EFM_SGBD_1
create table Service(Num_serv int identity(1,1) primary
key,Nom_serv varchar(50),Date_creation date)
create table Employe (Matricule int identity(1,1)
primary key,Nom varchar(50),Prenom
varchar(50),DateNaissance date,Adresse
varchar(50),Salaire float,Grade int,Num_serv int
foreign key references Service(Num_serv))
create table Projet(Num_prj int identity(1,1) primary
key,Nom_prj varchar(50), Lieu
varchar(50),nbr_limite_taches int,Num_serv int foreign
key references Service(Num_serv))
select *
from Projet
where Num_prj in (select distinct Num_prj from Tache
where DATEDIFF(DAY,date_debut,date_fin)<30) and Num_prj
in (select distinct Num_prj from Tache where
DATEDIFF(DAY,date_debut,date_fin)>60)
//6
select ta.Num_prj,SUM(tr.Nombre_heure) as "Masse
horaire"
from Travaille tr inner join Tache ta on
tr.Num_tache=ta.Num_tache
where YEAR(date_debut)=YEAR(getdate()) and
YEAR(date_fin)=YEAR(GETDATE())
group by Num_prj
//7
select
e.Matricule,e.Nom
where
DATEADD(year,Datediff(YEAR,DateNaissance,getdate()),Dat
eNaissance) between
cast (DATEADD(DAY,-DATEPART(WEEKDAY,GETDATE())
+1+7,GETDATE()) as DATE) //-- la date du premier jour
de la semaine prochaine
and
cast (DATEADD(DAY,-DATEPART(WEEKDAY,GETDATE())
+1+7+6,GETDATE()) as DATE) //-- la date du dernier jour
de la semaine prochaine
//9
select *
from Projet
where Num_prj in
(
select Num_prj
from Tache
group by Num_prj
having count(distinct Num_tache)=
(
select MAX(PT.nombre_taches)
)
)
//10
select
Num_prj,DATEDIFF(DAY,MIN(date_debut),max(date_fin)) as
"Dure de ralisation"
from Tache
group by Num_prj
//C
//1
update Employe
set Salaire=case
when Age>60 then Salaire+Salaire*5/100
when Age between 58 and 60 then
+Salaire*0.5/100
Salaire
else Salaire
end
//2
delete from Tache
where Num_tache in (select Num_tache from Tache where
GETDATE()>date_fin) and Num_tache not in (select
distinct Num_tache from Travaille)
//D
//1