Devoir N°1 en langage SQL

07 Apr 2020 07 Apr 2020 31812 vues ESSADDOUKI Mostafa 5 min de lecture

Exercice supplémentaire : Gestion des ventes

Schéma relationnel

Une société veut modéliser son système de gestion des ventes, pour cela elle élabore le modèle relationnel suivant :

  • Client (clt_num, clt_nom, clt_prenom, clt_pays, clt_loc, clt_type)
  • Commandes (cmd_num, cmd_date, #clt_num, #mag_num)
  • Magasin (mag_num, mag_loc, mag_gerant)
  • Ligne_cmd (#cmd_num, #art_num, lcd_qte, lcd_liv, lcd_pu, lcd_date_liv)
  • Article (art_num, art_nom, art_poids, art_stock, art_pa, art_pv, #art_four)

Une fois le modèle relationnel implémenté, l'administrateur de la base de données souhaite récupérer certaines informations à l'aide du langage SQL.

Exercice

Gestion des ventes

Écrire les requêtes SQL pour récupérer les informations suivantes :

  1. Donner le numéro des articles vendus, avec pour chacun le prix moyen de vente et le nombre de ventes.
  2. Donner par magasin les statistiques de vente en 2019, à savoir le nombre de ventes, le nombre de clients différents, et le nombre de jours où il y a eu des ventes.
  3. Donner les numéros des clients qui ont acheté plus d'une fois dans la semaine du 6 au 10 juin.
  4. Donner pour les années 2017 à 2019, le nombre de clients différents sur une année tous magasins confondus.
  5. Classer les localités en fonction du nombre décroissant de clients qui y habitent.
  6. Donner le numéro et la date d'achat des clients n'ayant acheté qu'une fois.
  7. Donner la liste des clients qui n'ont pas encore acheté des articles.
  8. Donner le numéro des articles dont la moyenne des quantités vendues est supérieure à la moyenne des quantités vendues en une fois tous articles confondus.
  9. Donner le numéro et le nom des articles qui ont été vendus à un prix de vente unitaire supérieur au prix de vente dans le catalogue.
Concepts SQL abordés dans cet exercice
  • SELECT avec agrégation : COUNT, AVG, SUM
  • GROUP BY : pour regrouper par article, magasin, client, localité
  • HAVING : pour filtrer sur les résultats d'agrégation (COUNT > 1, AVG > moyenne générale)
  • Sous-requêtes : IN, comparaison avec agrégats
  • Fonctions de date : YEAR, BETWEEN
  • Jointures : INNER JOIN entre Article et Ligne_cmd
  • DISTINCT : pour compter les clients uniques, les jours de vente
  • ORDER BY : pour classer les localités
  • NOT IN : pour trouver les clients sans commande
Sortie
// La sortie apparaîtra ici…
Prêt · Ctrl+Entrée pour exécuter

Discussion (0)

Soyez le premier à laisser un commentaire !

Laisser un commentaire

Votre commentaire sera visible après modération.