This repository has been archived on 2024-04-18. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
DeezCycle/sql/script_requete.sql
2024-04-05 10:05:47 +02:00

89 lines
2.6 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- "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 sest qualifié
-- lutilisateur courant. Le résultat sera trié sur les années selon lordre antéchronologique puis sur les niveaux
-- de phase selon lordre 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 nest 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 dau 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;