-- WHERE gd.idTeam = t.id AND gd.idGame = g.id AND g.season = GameSeason AND gd.threePointsPrctage >= ALL(SELECT threePointsPrctage
BEGIN
-- FROM GameDetail gd1
SELECTINTObestTeamIDgd.idTeam
-- WHERE gd1.idTeam = t.id);
FROMGameDetailgd,Gameg
-- RETURN idTeam;
WHEREgd.idGame=g.idANDg.season=GameSeason
-- END;
GROUPBYgd.idTeam
-- $$ LANGUAGE plpgsql;
ORDERBYAVG(gd.threePointsPrctage)DESC
LIMIT1;
RETURNbestTeamID;
END;
$$LANGUAGEplpgsql;
-- -- ? 16 - Utiliser cette fonction pour afficher la meilleure équipe (abbréviation, nom et ville) de la saison 2021 en pourcentage moyen de paniers à 3 points
-- ? 16 - Utiliser cette fonction pour afficher la meilleure équipe (abbréviation, nom et ville) de la saison 2021 en pourcentage moyen de paniers à 3 points
-- FROM Team t
-- WHERE idTeam3Points('2021') = t.id;
-- -- ? 17 - Écrire une fonction qui calcule combien de paniers à trois points ont été marqué par un joueur donné, pendant une saison donnée.
SELECTabbreviation,nickname,city
FROMTeam
WHEREid=idTeam3Points('2021');
-- CREATE OR REPLACE FUNCTION idTeam3Points(idPlayer Player.id%TYPE , GameSeason Game.season%TYPE) RETURNS numeric AS $$
-- ! charge infiniment
-- DECLARE
-- idTeam Team.id%TYPE;
-- ? 17 - Écrire une fonction qui calcule combien de paniers à trois points ont été marqué par un joueur donné, pendant une saison donnée.
-- WHERE gd.idTeam = t.id AND gd.idGame = g.id AND p.id = idPlayer AND g.season = GameSeason AND gd.threePointsPrctage >= ALL(SELECT threePointsPrctage
DECLARE
-- FROM GameDetail gd1
totalThreePointsnumeric;
-- WHERE gd1.idTeam = t.id);
BEGIN
-- RETURN idTeam;
SELECTSUM(gd.threePointsMade)
-- END;
INTOtotalThreePoints
-- $$ LANGUAGE plpgsql;
FROMGameDetailgd
JOINGamegONgd.idGame=g.id
WHEREgd.idPlayer=idPANDg.season=GameSeason;
RETURNtotalThreePoints;
END;
$$LANGUAGEplpgsql;
SELECTcount3pointsbyplayer('203932','2021');
-- ? 18 - Écrire une fonction qui calcule l’id du joueur ayant marqué le plus de paniers à trois points pendant une saison donnée.
RAISENOTICE'Saison %: Joueur ID %, Nombre de paniers à trois points : %',season_value,player_id,total_3_points;
ENDLOOP;
END;
$$;
-- ? 20 - Ce calcul est très long. Pour effectuer un calcul plus efficace, nous allons créer une table supplémentaire permettant de stocker des statistiques.
-- ? Créer la table Stats(season, player, threePoints) contenant le nombre de paniers à trois points marqués par chaque joueur pendant une saison et
-- ? la remplir avec les données contenues dans GameDetail.
-- ? △! Penser à éliminer les valeurs NULL.
-- -- ? 19 - En utilisant les fonctions précédement créées, écrire un bloc anonyme qui affiche pour chaque saison, par ordre chronologique,
CREATETABLEStats(
-- -- ? le nom du joueur ayant marqué le plus de paniers à trois points ainsi que le nombres de paniers à trois points marqués.
seasonnumeric,
playervarchar(10),
threePointsnumeric
);
-- -- ? 20 - Ce calcul est très long. Pour effectuer un calcul plus efficace, nous allons créer une table supplémentaire permettant de stocker des statistiques.
-- Insertion des données de GameDetail dans la table Stats
-- -- ? Créer la table Stats(season, player, threePoints) contenant le nombre de paniers à trois points marqués par chaque joueur pendant une saison et
INSERTINTOStats(season,player,threePoints)
-- -- ? la remplir avec les données contenues dans GameDetail.