------------ Solution du laboratoire 5
------------ Pour simplifier l'écriture des requêtes, la solution contient des alias
------------ au niveau des jointures. Vous n'êtes pas obligés d'avoir des alias.


--1

select nom, prenom, nomprogramme
    from (etudiants e inner join programmes p on e.codeprogramme = p.codeprogramme); 

--2
select nom, prenom, p.codeprogramme, nomprogramme
    from (etudiants e 
    inner join programmes p on e.codeprogramme = p.codeprogramme)
where nomprogramme ='Informatique'; 

--3
select nom, prenom
    from (etudiants e inner join programmes p on e.codeprogramme = p.codeprogramme)
where nomprogramme ='Informatique' or nomprogramme ='Administration'; 

--4
select codecours,titrecours
    from cours 
    inner join programmes on cours.codeprogramme = programmes.codeprogramme
where nomprogramme ='Informatique';

--5
select nom, prenom, codecours,note
    from etudiants e 
    inner join resultats r on e.numad=r.numad
where codecours ='KB6' order by note;

--6
select  c.codecours, titrecours, note,numad
    from cours c 
    inner join resultats r on c.codecours=r.codecours
where titrecours ='Programmation Web' order by note;

--7
select nom, prenom, titrecours,note
    from ((etudiants e 
    inner join resultats r on e. numad = r.numad)
    inner join cours c on c.codecours=r.codecours) 
where note >70 order by note;
 
--8
select nom, prenom, titrecours,note
from ((etudiants e inner join resultats r on e. numad = r.numad)
inner join cours c on c.codecours=r.codecours) where note >70 
and titrecours ='Introduction aux bases de données' order by note;

--9---- On affiche le titre du cours et le nom du programme pour vérifier
select nom, prenom, note, titrecours, nomprogramme
    from ((programmes p 
    inner join etudiants e on e.codeprogramme =p.codeprogramme)
    inner join resultats r on r.numad = e. numad
    inner join cours c on c.codeCours =r.codeCours)
where p.nomprogramme ='Informatique'
and c.titrecours ='Introduction aux bases de données';

--10
select nom, prenom,nomprogramme
    from etudiants e
    left outer join programmes p on e.codeprogramme =p.codeprogramme;

--11
select nom, prenom,nomprogramme
    from etudiants e 
    right outer join programmes p on e.codeprogramme =p.codeprogramme;

--12
select nom, prenom, note
    from etudiants e 
    left join resultats r on e.numad=r.numad
where note is null;

--13
select  titrecours, note
    from cours c 
    left join resultats r on c.codecours=r.codecours
where note is null;

--14
select count(*) from etudiants;

--15
select count(*) from etudiants where codeprogramme =420;

--16

select count(*), codeprogramme from etudiants 
where codeprogramme is not null
group by codeprogramme;

 --17
select count(*) as total_etudiants , nomprogramme
from etudiants e inner join programmes p on e.codeprogramme =p.codeprogramme
group by nomprogramme order by total_etudiants desc ;

--18
select count(*) as total_etudiants , nomprogramme
    from etudiants e
    inner join programmes p on e.codeprogramme =p.codeprogramme
group by nomprogramme
having count(*)>2;

--19
select avg(note) from resultats where codecours ='KB6';
-- ou alors 
select round (avg(note),2) from resultats where codecours ='KB6';

--20
select min(note)as noteMin ,max(note) as noteMax from resultats where codecours='KB6';

--21

select  titrecours, avg(note) 
    from cours c 
    inner join resultats r on c.codecours=r.codecours
group by titrecours;

---ou alors
select  titrecours, round(avg(note),2) 
from cours c inner join resultats r on c.codecours=r.codecours
group by titrecours;



--18