diff --git a/sql/script_requete.sql b/sql/script_requete.sql new file mode 100644 index 0000000..362ec7f --- /dev/null +++ b/sql/script_requete.sql @@ -0,0 +1,88 @@ +-- "un n-uplet contenant le nombre de joueurs, le nombre d’équipes, le nombre de classements, le nombre de +-- tournois et la moyenne des participants par tournoi". +SELECT ( + SELECT COUNT(*) FROM joueur +) AS nb_joueurs, +( + SELECT COUNT(*) FROM equipe +) AS nb_equipes, +( + SELECT COUNT(*) FROM classement +) AS nb_classements, +( + SELECT COUNT(*) FROM tournoi +) AS nb_tournois, +( + WITH participants_tournois AS + (SELECT idtournoi, COUNT(idtournoi) AS nb FROM participe GROUP BY idtournoi) + SELECT AVG(nb) AS average FROM participants_tournois +) AS moyenne_participants; + + + + + +-- "les phases de tournoi (nom et année de tournoi, niveau de phase) jouées et pour lesquelles s’est qualifié +-- l’utilisateur courant. Le résultat sera trié sur les années selon l’ordre antéchronologique puis sur les niveaux +-- de phase selon l’ordre lexicographique inverse". +SELECT T.nom, YEAR(T.date_deb), Ph.niveau +FROM participe Pa + JOIN phase Ph USING(idtournoi) + JOIN tournoi T USING(idtournoi) +WHERE Pa.idjoueur = ? AND Pa.est_qualifie +ORDER BY T.date_deb DESC, Ph.niveau DESC; + + + + + +--"le nombre d’équipes classées premières des classements et dont aucun des membres n’est premier dans +-- un classement individuel". +SELECT idC FROM donnees_fournies.classement_equipe WHERE rang = 1; + + + + + +-- "Pour les 3 dernières années, donner le nombre moyen de participants aux tournois". +WITH participants_tournois AS + (SELECT idtournoi, COUNT(idtournoi) AS nb + FROM participe + JOIN tournoi USING(idtournoi) + AND YEAR(T.date_deb) >= (YEAR(NOW()) - 3) + GROUP BY idtournoi) +SELECT AVG(nb) AS average FROM participants_tournois; + + + + + +-- "Donner le nom et le prénom des joueurs classés de manière individuelle dans le top 5 d’au moins 2 +-- classements de portée nationale". +SELECT DISTINCT J.nom, J.prenom FROM joueur J + JOIN donnees_fournies.classement_individuel CI1 ON J.idjoueur = CI1.idJ + JOIN donnees_fournies.classement_individuel CI2 ON J.idjoueur = CI2.idJ + JOIN donnees_fournies.classement C1 ON C1.idC = CI1.idC + JOIN donnees_fournies.classement C2 ON C2.idC = CI2.idC + WHERE CI1.rang >= 5 AND CI2.rang >= 5 + AND C1.portée = "nationale" AND C2.portée = "nationale" + AND CI1.idc < CI2.idC; + + + + + +-- "Pour chaque taille de plateau, donner le nombre de parties jouées avec un plateau de cette taille". +SELECT taille, COUNT(idpartie) AS nb_parties + FROM plateau JOIN partie USING(idplateau) + GROUP BY taille; + + + + + +-- "Le top 5 des joueurs (pseudo) qui ont joué le plus de parties" +WITH top_players AS + (SELECT pseudo, COUNT(idPartie) AS nb_parties FROM joueur JOIN joue USING(idjoueur) GROUP BY idjoueur ORDER BY nb_parties) + +SELECT pseudo FROM top_players LIMIT 5;