0% ont trouvé ce document utile (0 vote)
39 vues3 pages

Corrigé TD SQL

Le document présente une série de requêtes SQL pour interagir avec une base de données de commandes et de clients. Les requêtes incluent la récupération d'utilisateurs, le calcul de montants totaux, l'enregistrement de prix totaux, et l'ajout de catégories basées sur des seuils de prix. Des mises à jour de tables et des regroupements par date et client sont également abordés.

Transféré par

selflearning37
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
39 vues3 pages

Corrigé TD SQL

Le document présente une série de requêtes SQL pour interagir avec une base de données de commandes et de clients. Les requêtes incluent la récupération d'utilisateurs, le calcul de montants totaux, l'enregistrement de prix totaux, et l'ajout de catégories basées sur des seuils de prix. Des mises à jour de tables et des regroupements par date et client sont également abordés.

Transféré par

selflearning37
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

1.

Obtenir l’utilisateur ayant le prénom “Muriel” et le mot de passe “test11”,


sachant que
l’encodage du mot de passe est effectué avec l’algorithme Sha1.
SELECT *
FROM `client`
WHERE `prenom` = 'Muriel'
AND `password` = SHA1("test11")
2. Obtenir la liste de tous les produits qui sont présent sur plusieurs
commandes.
SELECT nom, COUNT(*) AS nbr_items
FROM `commande_ligne`
GROUP BY nom
HAVING nbr_items > 1
ORDER BY nbr_items DESC

3. Obtenir la liste de tous les produits qui sont présent sur plusieurs commandes
et y ajouter une colonne qui liste les identifiants des commandes associées.

SELECT nom, COUNT( * ) AS nbr_pr FROM `commande_ligne`


GROUP BY nom
HAVING nbr_pr>1
ORDER BY nbr_pr DESC

GROUP BY Pour obtenir le coût total de chaque client en regroupant les commandes des
mêmes clients. ’éviter la répétition’

HAVING les clients qui ont le nbr >1

ORDER BY : trier en ordre ASC ou desc

4. Enregistrer le prix total à l’intérieur de chaque ligne des commandes, en


fonction du prix unitaire et de la quantité
 Calcule du prix_total = quantite` * `prix_unitaire

UPDATE `commande_ligne` SET `prix_total` = ( `quantite` * `prix_unitaire` )

5. Obtenir le montant total pour chaque commande et y voir facilement la date


associée à cette commande ainsi que le prénom et nom du client associé

SELECT [Link], [Link], commande.date_achat, commande_id, SUM( prix_total )


AS prix_cmd FROM `commande_ligne`
LEFT JOIN commande ON [Link] = commande_ligne.commande_id
LEFT JOIN client ON [Link] = commande.client_id
GROUP BY `commande_id`

6. Enregistrer le montant total de chaque commande dans le champ intitulé


“cache_prix_total”

UPDATE commande AS t1 INNER JOIN (


SELECT commande_id, SUM( commande_ligne.prix_total ) AS p_total
FROM commande_ligne
GROUP BY commande_id)t2 ON [Link] = t2.commande_id
SET t1.cache_prix_total = t2.p_total

7. Obtenir le montant global de toutes les commandes, pour chaque


mois

SELECT YEAR( `date_achat` ) , MONTH( `date_achat` ) , SUM( `cache_prix_total` )


FROM commande
GROUP BY YEAR( `date_achat` ) , MONTH( `date_achat` )
ORDER BY YEAR( `date_achat` ) , MONTH( `date_achat` )

8. Obtenir la liste des 10 clients qui ont effectué le plus grand


montant de commandes, et obtenir ce montant total pour chaque
client.
SELECT [Link], [Link], SUM( commande.cache_prix_total ) AS montant_total
FROM `commande`
LEFT JOIN client ON [Link] = commande.client_id
GROUP BY commande.client_id
ORDER BY montant_total DESC

9. Obtenir le montant total des commandes pour chaque date


SELECT `date_achat` , SUM( cache_prix_total ) AS Montant_total
FROM commande
GROUP BY date_achat

10. Ajouter une colonne intitulée “category” à la table


contenant les commandes. Cette colonne contiendra une valeur
numérique

ALTER TABLE `commande` ADD `category` TINYINT UNSIGNED NOT NULL AFTER
`cache_prix_total`;

11. Enregistrer la valeur de la catégorie, en suivant les règles suivantes :


“1” pour les commandes de moins de 200€
“2” pour les commandes entre 200€ et 500€
“3” pour les commandes entre 500€ et 1.000€
“4” pour les commandes supérieures à 1.000€
UPDATE `commande`

SET `category` = (

CASE

WHEN cache_prix_total<200 THEN 1

WHEN cache_prix_total<500 THEN 2

WHEN cache_prix_total<1000 THEN 3

ELSE 4

END )

Vous aimerez peut-être aussi