0% ont trouvé ce document utile (0 vote)
155 vues3 pages

Exercices SQL pour débutants

Transféré par

Àymanĕ Ła Tracë
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
155 vues3 pages

Exercices SQL pour débutants

Transféré par

Àymanĕ Ła Tracë
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

EMSI – Rabat

TP 1 : Le langage SQL

Considérons le schéma relationnel suivant :

III) Interrogation de la base de données


Ecrire les requêtes SQL qui permettent de lister :
1) Tous les patients.
select * from pat;
2) Le nom et l’âge des patients de Rabat.
select nompat, agepat from pat where villepat='Rabat';
3) Les patients de Casablanca dont le nom est ‘Touzani’.
select * from pat where villepat='Casablanca' and nompat='Touzani';
4) Les patients dont le nom est soit ‘Naciri’ soit ‘Ansari’.
select * from pat where nompat in ('Naciri','Ansari');
5) Les noms des patients dont le nom contient par ’d'.
select * from pat where nompat like '%d%';
6) Les ordonnances de 2021 classées dans l’ordre décroissant des numéros
d’ordonnance.

1
select * from ord where dateord between '01/01/2021' and '31/12/2021' order by
numord desc;
7) Les RDVs qui n’ont pas de motif.
select * from RDV where motif is null;
8) Les noms des patients ayant pris au moins un médicament de prix supérieur à 80DH.
Select Distinct [Link] from PAT P, ORD O, DET D, MED M where [Link]=[Link]
and [Link]=[Link] and [Link]=[Link] and Prix>=80;

9) Les noms des patients n’ayant pas pris un médicament de prix supérieur à 80 DH.

select Distinct [Link] from PAT P where [Link] NOT IN (Select [Link] From
ORD O, DET D, MED M where [Link]=[Link] and [Link]=[Link] and
Prix>=80);

10) Le nombre de RDV par docteur en 2021.


select NumDoc, Count(*) "Nb RDV 2021" from RDV Where DateRDV Between '01-JAN-
2021' and '31-DEC-2021' Group by numDoc;
or
select NumDoc, Count(*) "Nb RDV 2021" from RDV WHERE EXTRACT(YEAR FROM
DateRDV) = 2021 Group by numDoc;

11) Les numéros d’ordonnances et leur montant total.


select numORD, SUM(Qte*Prix) "Montant total" from DET D, MED M where
[Link]=[Link] Group by [Link];
12) Les patients sans RDV en 2021
select * from PAT P where [Link] NOT IN (Select [Link] from RDV R Where
[Link] Between '01/01/2021' and '31/12/2021');
13) Les patients ayant eu des RDV avec tous les docteurs
Select * from PAT P Where (select COUNT(Distinct [Link]) from RDV R Where
[Link]=[Link]) = (Select COUNT(*) From DOC);
14) Les docteurs ayant eu des RDV avec tous les patients
Select * from DOC D Where (select COUNT(Distinct [Link]) from RDV R Where
[Link]=[Link]) = (Select COUNT(*) From PAT);

15) Les patients ayant eu des RDV avec les mêmes docteurs que le patient N°10.

Select * from PAT P


Where NOT EXISTS((Select Distinct [Link] From RDV R1 Where
[Link]=[Link]) MINUS (Select Distinct [Link] From RDV R2 Where
[Link]=10))
AND NOT EXISTS ((Select Distinct [Link] From RDV R3 Where [Link]=10)
MINUS (Select Distinct [Link] From RDV R4 Where [Link]=[Link]))
And [Link]<>10;

16) Les médicaments les plus prescrits en 2021.


Select [Link] From (Select [Link], COUNT(*) Nb from ORD O1, DET D1
where [Link]=[Link] and [Link] Between ‘01/01/2021’ and
‘31/12/2021’ group by [Link]) T1 Where [Link] = (select MAX(T2.Nb2) from
(Select [Link], COUNT(*) Nb2 from ORD O2, DET D2 where
[Link]=[Link] and [Link] Between ‘01/01/2021’ and ‘31/12/2021’
group by [Link]) T2) ;

Vous aimerez peut-être aussi