DSSGL 2008: Correction Examen Final - Partie 1
Partie 1 : Questions de cours SQL
En considérant le MLD ci-dessous concernant un système de facturation pour les clients d’une PME, répondez aux questions ci-après.
1) Donner l’instruction qui a permis de créer la table Article en considérant que AID est un nombre entier, ADesignation une chaine de caractère variable de longueur 20 et APrixUnitaire un montant d’argent. 2pts
CREATE TABLE ARTICLE (
AID Integer Primary Key,
ADESIGNATION Varchar (20),
APRIXUNITAIRE Monetaire);
2) Ecrire l’instruction qui permet d’ajouter un article avec un AID valant 101, de désignation 'Clé USB 1Go' et prix unitaire de 5000. 2pts
INSERT INTO Article ( AID, ADESIGNATION, APRIXUNITAIRE )
VALUES (101,'Clé USB 1Go',5000);
3) Modifiez la taxe avec la valeur « 0.18 » pour toutes les factures émises après le 1er janvier 2000 inclus. 2pts
UPDATE FACTURE
SET FTAXE=0.18
WHERE FDATE>='01/01/2000'
4) Ecrire une instruction permettant de supprimer tous les clients qui n’ont jamais fait l’objet de facturation. 2pts
DELETE FROM CLIENT
WHERE CID Not In (SELECT CID FROM FACTURE);
5) Afficher la liste des clients pour lesquelles les champs « adresse e-mail » et « téléphone » sont vides. 2pts
SELECT * FROM CLIENT
WHERE CEMail='' AND CTéléphone=''
6) Afficher une liste indiquant le code et la date de la facture, le nom et le prénom du client. 2pts
SELECT F.FCODE, F.FDATE, C.CNom, C.CPrénoms
FROM Client C INNER JOIN Facture F ON C.CID = F.CID;
7) Afficher une liste indiquant le code de la facture et le montant total de la facture (sans considérer la remise au niveau de la facture). 2pts
SELECT D.FID, SUM(DFQuantité*APRIXUNITAIRE) as MontantTotal
FROM DetailsFacture D INNER JOIN ARTICLE A ON D.AID = A.AID
GROUP BY D.FID;
8) Afficher une liste indiquant pour chaque client (uniquement le champ CID) la remise maximale et la remise minimale. 2pts
9) Afficher la liste des articles qui ont été facturés en plus de 100 exemplaires. 2pts
SELECT A.AID, SUM(DFQuantité) as QteTotal
FROM DetailsFacture D INNER JOIN ARTICLE A ON D.AID = A.AID
GROUP BY A.AID
HAVING SUM(DFQuantité) >=100;
10) Afficher la liste des 10 derniers clients en date ayant reçus une facture. 2pts
SELECT TOP 10 C.*
FROM CLIENT C INNER JOIN FACTURE F ON C.CID=F.CID
ORDER BY F.FDATE DESC