adplus-dvertising

Devoir N°1 en langage SQL

Devoir N°1 en langage SQL

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, lvd_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 est implémenté, l'administrateur de la base de données souhaite récupérer certaines informations de la base de données à l'aide du langage SQL. Ecrire les requêtes SQL pour récupérer ces informations

  1. Donnéer le numéro des articles vendus, avec pour chacun le prix moyen de vente et le nombre de ventes
                                            Select art_num, AVG(lcd_pu), count(*) from Ligne_cmd group by art_num 
                                        
  2. Donner par magasin les statistiques de vente en 2019, à savoir le nombre de vente, le nombre de clients différents, et le nombre de jours ou il y a eu des ventes
                                            select mag_num, count(*) as "Nombre de ventes", count(DISTINCT clt_num) as "Nombre de clients", 
                                            count(DISTINCT cmd_date) as "Nombre de jours" from Commandes 
                                            where YEAR(cmd_date)=2019 group by mag_num
                                        
  3. Donner les numéros des client qui ont acheté plus qu'une fois dans la semaine du 6 au 10 juin
                                            select clt_num from Commandes where cmd_date between "2019-06-06" and "2019-06-10"
                                            group by clt_num having count(*)>1 
                                        
  4. Donner pour les années 2017 à 2019, le nombre de clients différents sur une année tous lagasin confondus
                                            select YEAR(cmd_date), count(DISTINCT clt_num) from Commandes
                                            where YEAR(cmd_date) between 2017 and 2019 group by YEAR(cmd_date) 
                                        
  5. Classer les localités en fonction du nombre décroissant de clients qui y habitent
                                            select clt_loc from client group by clt_loc order by count(*) DESC 
                                        
  6. Donner le numéro et la date d'achat des clients n'ayant acheté qu'une fois
                                            select cmd_num, cmd_date  from Commandes where clt_num in 
                                            (select clt_num from Commandes group by clt_num having count(*)=1) 
                                        
  7. Donner la liste des clients qui n'ont pas encore acheté des articles
                                            select * from Client where clt_num not in (select distinct clt_num from Commandes) 
                                        
  8. Donner le numéro des articles dont ma moyenne des quantités vendues est supérieure à la moyenne des quantités vendues en une fois tous articles confondus
                                            select art_num from Ligne_cmd group by art_num 
                                            having AVG(lcd_qte)>(select AVG(lcd_qte) from Ligne_cmd) 
                                        
  9. Donner le numéro et le nom des articles qui ont été vendu à un prix de vente unitaire supérieur au prix de vente dans le catalogue
                                            select A.art_num, A.art_nom from Article AS A join Ligne_cmd as L on A.art_num=L.art_num 
                                            where L.lct_pu>A.art_pv group by A.art_num, A.art_nom
                                        

Partager ce cours avec tes amis :
Rédigé par ESSADDOUKI Mostafa
ESSADDOUKI
The education of the 21st century opens up opportunities to not merely teach, but to coach, mentor, nurture and inspire.