Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --1) Quels est le ou les matche qui on le plus grand Nombre de spéctacle.
- select *
- from Matche
- where NombreSpectateur = (select max(NombreSpectateur) from Matche)
- --2) Quelle sont les noms de stades dans le quelle on a jouée le plus grand Nombre de matche.
- select S.CodeStade, S.NomStade
- from Stade S inner join Matche M on S.CodeStade=M.CodeStade
- group by S.CodeStade, S.NomStade
- having Count(*) = ( select top 1 Count(*)
- from Matche
- group by CodeStade
- order by Count(*) desc )
- --3) Lister pour chaque Matche le nom de Equipe Locale, le nom de Equipe Visiteur, Nombre de But Locale, Nombre de But Visiteur.
- --Première solution :
- select M.CodeMatche, EL.NomEquipe as NomEquipeLocale, EV.NomEquipe as NomEquipeVisiteur, M.NombreButLocale, M.NombreButVisiteur
- from Equipe EL inner join Matche M on EL.CodeEquipe=M.CodeEquipeLocale
- inner join Equipe EV on M.CodeEquipeVisiteur=EV.CodeEquipe
- --Deuxième solution :
- select M.CodeMatche,(select EL.NomEquipe from Equipe EL where EL.CodeEquipe=M.CodeEquipeLocale) as NomEquipeLocale
- ,(select EV.NomEquipe from Equipe EV where M.CodeEquipeVisiteur=EV.CodeEquipe) as NomEquipeVisiteur,
- M.NombreButLocale, M.NombreButVisiteur
- from Matche M
- --4) Donné pour chaque Equipe le Nombre de But marqué.
- --Première solution :
- select E.CodeEquipe, E.NomEquipe, Sum(NombreButMarqué) as NombreButMarqué
- from (
- select CodeEquipeLocale as CodeEquipe, Sum(NombreButLocale) as NombreButMarqué
- from Matche
- group by CodeEquipeLocale
- union all
- select CodeEquipeVisiteur as CodeEquipe, Sum(NombreButVisiteur) as NombreButMarqué
- from Matche
- group by CodeEquipeVisiteur
- ) R inner join Equipe E on R.CodeEquipe=E.CodeEquipe
- group by E.CodeEquipe, E.NomEquipe
- --Deuxième solution :
- select E.CodeEquipe, E.NomEquipe,
- ISNULL((select Sum(M.NombreButLocale) from Matche M where M.CodeEquipeLocale=E.CodeEquipe),0) +
- ISNULL((select Sum(M.NombreButVisiteur) from Matche M where M.CodeEquipeVisiteur=E.CodeEquipe),0) as NombreButMarqué
- from Equipe E
- --5) Donné pour chaque Equipe le Nombre de But reçus.
- --Première solution :
- select E.CodeEquipe, E.NomEquipe, Sum(NombreButReçus) as NombreButReçus
- from (
- select CodeEquipeLocale as CodeEquipe, Sum(NombreButVisiteur) as NombreButReçus
- from Matche
- group by CodeEquipeLocale
- union all
- select CodeEquipeVisiteur as CodeEquipe, Sum(NombreButLocale) as NombreButReçus
- from Matche
- group by CodeEquipeVisiteur
- ) R inner join Equipe E on R.CodeEquipe=E.CodeEquipe
- group by E.CodeEquipe, E.NomEquipe
- --Deuxième solution :
- select E.CodeEquipe, E.NomEquipe,
- ISNULL((select Sum(M.NombreButVisiteur) from Matche M where M.CodeEquipeLocale=E.CodeEquipe),0) +
- ISNULL((select Sum(M.NombreButLocale) from Matche M where M.CodeEquipeVisiteur=E.CodeEquipe),0) as NombreButReçus
- from Equipe E
- --6) Donné pour chaque Equipe le Nombre de But marqué et reçus.
- --Première solution :
- select E.CodeEquipe, E.NomEquipe, Sum(NombreButMarqué) as NombreButMarqué, Sum(NombreButReçus) as NombreButReçus
- from (
- select CodeEquipeLocale as CodeEquipe, Sum(NombreButLocale) as NombreButMarqué, Sum(NombreButVisiteur) as NombreButReçus
- from Matche
- group by CodeEquipeLocale
- union all
- select CodeEquipeVisiteur as CodeEquipe, Sum(NombreButVisiteur) as NombreButMarqué, Sum(NombreButLocale) as NombreButReçus
- from Matche
- group by CodeEquipeVisiteur
- ) R inner join Equipe E on E.CodeEquipe=R.CodeEquipe
- group by E.CodeEquipe, E.NomEquipe
- --Deuxième solution :
- select E.CodeEquipe, E.NomEquipe,
- ISNULL((select Sum(M.NombreButLocale) from Matche M where M.CodeEquipeLocale=E.CodeEquipe),0) +
- ISNULL((select Sum(M.NombreButVisiteur) from Matche M where M.CodeEquipeVisiteur=E.CodeEquipe),0) as NombreButMarqué,
- ISNULL((select Sum(M.NombreButVisiteur) from Matche M where M.CodeEquipeLocale=E.CodeEquipe),0) +
- ISNULL((select Sum(M.NombreButLocale) from Matche M where M.CodeEquipeVisiteur=E.CodeEquipe),0) as NombreButReçus
- from Equipe E
- --7) Lister pour chaque Equipe le Nombre de point (3 points pour chaque matche gagnée, 1 point pour chaque égalité, 0 point pour chaque défaite).
- --Première solution :
- select E.CodeEquipe, E.NomEquipe, Sum([Nombre de point]) as [Nombre de point]
- from (
- select E.CodeEquipe, Count(*)*3 as [Nombre de point], E.CodeEquipe as CE
- from Matche M, Equipe E
- where (M.CodeEquipeLocale=E.CodeEquipe and NombreButLocale>NombreButVisiteur)
- or (M.CodeEquipeVisiteur=E.CodeEquipe and NombreButLocale<NombreButVisiteur)
- group by E.CodeEquipe
- union all
- select E.CodeEquipe, Count(*) as [Nombre de point], E.CodeEquipe as CE
- from Matche M, Equipe E
- where (M.CodeEquipeLocale=E.CodeEquipe or M.CodeEquipeVisiteur=E.CodeEquipe) and NombreButLocale=NombreButVisiteur
- group by E.CodeEquipe
- ) Resultat inner join Equipe E on Resultat.CodeEquipe=E.CodeEquipe
- group by E.CodeEquipe, E.NomEquipe
- --Deuxième solution :
- select E.CodeEquipe, E.NomEquipe,
- (select Count(*) from Matche M where (M.CodeEquipeLocale=E.CodeEquipe and NombreButLocale>NombreButVisiteur) or (M.CodeEquipeVisiteur=E.CodeEquipe and NombreButLocale<NombreButVisiteur))*3 +
- (select Count(*) from Matche M where (M.CodeEquipeLocale=E.CodeEquipe or M.CodeEquipeVisiteur=E.CodeEquipe) and NombreButLocale=NombreButVisiteur)
- as [Nombre de point]
- from Equipe E
- --8) Quelle Equipe qui a gagné le Tournoi.
- --Première solution :
- select top 1 E.CodeEquipe, E.NomEquipe, Sum([Nombre de point]) as [Nombre de point]
- from (
- select E.CodeEquipe, Count(*)*3 as [Nombre de point], E.CodeEquipe as CE
- from Matche M, Equipe E
- where (M.CodeEquipeLocale=E.CodeEquipe and NombreButLocale>NombreButVisiteur)
- or (M.CodeEquipeVisiteur=E.CodeEquipe and NombreButLocale<NombreButVisiteur)
- group by E.CodeEquipe
- union all
- select E.CodeEquipe, Count(*) as [Nombre de point], E.CodeEquipe as CE
- from Matche M, Equipe E
- where (M.CodeEquipeLocale=E.CodeEquipe or M.CodeEquipeVisiteur=E.CodeEquipe) and NombreButLocale=NombreButVisiteur
- group by E.CodeEquipe
- ) Resultat inner join Equipe E on Resultat.CodeEquipe=E.CodeEquipe
- group by E.CodeEquipe, E.NomEquipe
- order by Sum([Nombre de point]) desc
- --Deuxième solution :
- select top 1 E.CodeEquipe, E.NomEquipe,
- (select Count(*) from Matche M where (M.CodeEquipeLocale=E.CodeEquipe and NombreButLocale>NombreButVisiteur) or (M.CodeEquipeVisiteur=E.CodeEquipe and NombreButLocale<NombreButVisiteur))*3 +
- (select Count(*) from Matche M where (M.CodeEquipeLocale=E.CodeEquipe or M.CodeEquipeVisiteur=E.CodeEquipe) and NombreButLocale=NombreButVisiteur)
- as [Nombre de point]
- from Equipe E
- order by [Nombre de point] desc
- --9) Quelle sont les Equipes qui ont le plus grande nombre de point.
- select top 1 E.CodeEquipe, E.NomEquipe from Equipe E
- where ( (select Count(*)*3
- from Matche M
- where (M.CodeEquipeLocale=E.CodeEquipe and NombreButLocale>NombreButVisiteur)
- or (M.CodeEquipeVisiteur=E.CodeEquipe and NombreButLocale<NombreButVisiteur)
- )
- +
- (select Count(*)
- from Matche M
- where (M.CodeEquipeLocale=E.CodeEquipe or M.CodeEquipeVisiteur=E.CodeEquipe)
- and NombreButLocale=NombreButVisiteur
- )
- )
- =
- (select top 1 sum([Nombre de point]) as [Nombre de point]
- from (select Count(*)*3 as [Nombre de point], E.CodeEquipe as CE
- from Matche M, Equipe E
- where (M.CodeEquipeLocale=E.CodeEquipe and NombreButLocale>NombreButVisiteur)
- or (M.CodeEquipeVisiteur=E.CodeEquipe and NombreButLocale<NombreButVisiteur)
- group by E.CodeEquipe
- union all
- select Count(*) as [Nombre de point], E.CodeEquipe as CE
- from Matche M, Equipe E
- where (M.CodeEquipeLocale=E.CodeEquipe or M.CodeEquipeVisiteur=E.CodeEquipe) and NombreButLocale=NombreButVisiteur
- group by E.CodeEquipe
- ) R
- group by R.CE
- order by [Nombre de point] desc
- )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement