TP 2 - Dates et agrégats

TP 2 : Agrégats, Choix multiple et Dates

Description

Ce TP poursuit l'apprentissage SQL sur la base Comptoir2000 en se concentrant sur :

  1. Agrégats : Fonctions d'agrégation (COUNT, SUM, AVG, MIN, MAX), GROUP BY, HAVING
  2. Choix multiple : Instructions CASE pour du SQL conditionnel
  3. Dates : Manipulation et extraction de dates avec STRFTIME

Schéma de la base de données

La base Comptoir2000 contient les tables principales :

Categorie (🔑 CodeCateg, NomCateg, Description)
Client (🔑 CodeCli, Societe, Contact, Fonction, Adresse, Ville, Region, CodePostal, Pays, Tel, Fax)
Commande (🔑 NoCom, 🔗 CodeCli, 🔗 NoEmp, DateCom, ALivAvant, DateEnv, NoMess, Port, Destinataire, AdrLiv, VilleLiv, RegionLiv, CodepostalLiv, PaysLiv)
DetailCommande (🔑🔗 Nocom, 🔑🔗 Refprod, PrixUnit, Qte, Remise)
Employe (🔑 NoEmp, Nom, Prenom, Fonction, TitreCourtoisie, DateNaissance, DateEmbauche, Adresse, Ville, Region, Codepostal, Pays, TelDom, Extension, RendCompteA)
Fournisseur (🔑 NoFour, Societe, Contact, Fonction, Adresse, Ville, Region, CodePostal, Pays, Tel, Fax, PageAccueil)
Messager (🔑 NoMess, NomMess, Tel)
Produit (🔑 Refprod, Nomprod, 🔗 NoFour, 🔗 CodeCateg, QteParUnit, PrixUnit, UnitesStock, UnitesCom, NiveauReap, Indisponible)

Conseils pour bien démarrer

  • Testez vos requêtes progressivement en commençant simple, puis ajoutez complexité
  • Pour les agrégats : n'oubliez pas que WHERE filtre par lignes AVANT l'agrégation, HAVING qui filtre par groupe APRÈS
  • Pour les dates : STRFTIME permet d'extraire année, mois, jour ('%Y', '%m', '%d')
  • Utilisez les indices pour vérifier votre compréhension du concept, pas pour vous éviter de vous tromper, c'est comme ça que l'on apprend.

Exemples de requêtes SQL de manipulation de dates

-- Extraire l'année d'une date
SELECT STRFTIME('%Y', DateCom) AS AnneeCommande FROM Commande;
-- Compter les commandes par année
SELECT STRFTIME('%Y', DateCom) AS Annee, COUNT(*) AS NombreCommandes
FROM Commande
GROUP BY Annee;

Exemples de requêtes SQL utilisant Having

-- Compter les produits par catégorie et ne garder que celles avec plus de 10 produits
SELECT Categorie, COUNT(*) AS NombreProduits
FROM Produit
GROUP BY Categorie
HAVING NombreProduits > 10;

Le diagramme s'affichera ici une fois la base chargée

Structure des tables

Les détails des tables s'afficheront ici une fois la base chargée

Les résultats s'afficheront ici après exécution d'une requête
Aucune requête exécutée