diff --git a/PostgreSQL/src/select.sql b/PostgreSQL/src/select.sql index 32fb848..2e65d9b 100644 --- a/PostgreSQL/src/select.sql +++ b/PostgreSQL/src/select.sql @@ -2,6 +2,73 @@ -- Some requests for the statistics and to consult the database. -- ============================================================================ - +-- ============================================================================ +-- CONSULTATION -- ============================================================================ +-- Liste des boîtes parues depuis 5 ans. +SELECT boites.titre_boite +FROM boites +WHERE DATE_PART('year', AGE(NOW(), boites.date_boite) < 5; + +--Liste des modèles proposés par des fans. + +SELECT id_modeles +FROM modeles +WHERE id_membre NOT NULL; + +-- Liste des pièces qui apparaissent dans des boîtes de différentes marques. + +SELECT id_piece +FROM ( -- couple (piece,marque) d'ou vient les pieces + SELECT DISTINCT id_piece, id_marque FROM contenir + NATURAL JOIN boites + NATURAL JOIN marques +) +GROUP BY id_piece +WHERE COUNT(*) > 1; +-- ============================================================================ + + +-- ============================================================================ +-- STATISTIQUES +-- ============================================================================ + +-- Nombre de piece par boite +CREATE OR REPLACE VIEW nb_piece_par_boite AS +( + SELECT id_boite, SUM(quantite_contenir) as nb_piece + FROM contenir + GROUP BY id_boite +); + +-- Le nombre moyen de pièces par boîte. +SELECT AVG(nb_piece) +FROM nb_piece_par_boite +; + +-- nombre de modele proposés par membre +CREATE OR REPLACE VIEW nb_modele_par_boite AS +( + SELECT id_membre, COUNT(*) as nb_boite + FROM modeles + GROUP BY id_membre +); + +-- La liste des membres qui ont proposé le plus de modèles. +SELECT id_membre, nb_boite +FROM nb_modele_par_boite +ORDER BY nb_boite +DESC +LIMIT 5 +; + +-- La liste des modèles, classés par note moyenne descendante. +SELECT id_modele, AVG(note_noter) as note_moyenne +FROM noter +GROUP BY id_modele +ORDER BY note_moyenne +DESC +; + +-- ============================================================================