Vous êtes sur la page 1sur 33

REQUTES : EXERCICES SQL ET QBE : Niveau de difficult A (trs facile)

Apprentissages : Une seule table. Critre unique = ordres simples : SELECT, FROM, WHERE, ORDER BY. Comparateurs = <> < <= > >= Noms des champs entre crochets quand ils comportent un espace. Point-virgule (;) la fin de chaque requte SQL. toile (*) pour prendre tous les champs dune table. Tri simple de la liste sur tel ou tel critre Masquer un champ, ncessaire comme critre dextraction ou clef de tri, mais indsirable laffichage. A1 - Liste des employs (nom, prnom, fonction) sans mise en ordre : (Difficult = respecter les accents)

A2 - Liste des clients (toutes rubriques) :


(Difficult = joker toile * signifie toutes rubriques )

A3 -

Liste des clients parisiens (toutes rubriques) :


(Difficult = trouver la rubrique filtre, ici Ville, et encadrer les constantes-texte avec des guillemets)

A4 -

Coordonnes des clients rsidant Stuttgart (nom, adresse, tlphone et fax) : (Difficult = reprer que la rubrique Nom nexiste pas dans Clients, et que Adresse ne suffit pas)

Exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 1

A5

Nom et tlphone de nos clients canadiens (ordre alpha) : (Difficults = premire utilisation de ORDER BY, et dcocher laffichage des colonnes utiles la requte mais inutiles laffichage, ici le pays)

A6 -

Liste des produits dont le stock est infrieur au niveau de rapprovisionnement : (Difficult = premire utilisation de 2 rubriques dans une clause WHERE)

A7 -

Nom et tlphone des fournisseurs non franais (ordre alpha) :

A8 -

Liste des catgories de produits par ordre alphabtique :

Exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 2

A9 -

Liste des commandes (numro de lemploy ayant pris la commande, date et montant) range par employ et par date :

A10 - Liste des noms de messagers dans lordre alphabtique :

A11 - Liste des noms de nos clients (ordre alpha) chez lesquels nous sommes en contact avec le propritaire :

A12 - Liste des produits dont le stock est infrieur 10 (par ordre croissant du niveau de stock) :

A13 - Liste des fournisseurs allemands (toutes rubriques et ordre alpha sur nom) :

Exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 3

A14 - Mme requte, mais ordonne sur le n de four nisseur :

A15 - Quelle est la date de naissance de lemploy King ?

A16 - Quels sont les numros de tlphone et de fax du fournisseur Ma Maison ? (afficher aussi sa ville) :

A17 - Quel est le numro de fax du client Bon app ?

Exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 4

REQUTES : EXERCICES SQL ET QBE : Niveau de difficult B (facile)


Apprentissages : Une seule table, toujours... Oprateur EST NULL. Oprateur PAS. (IS NULL et IS NOT NULL en SQL). Critres BEETWEEN --- AND ---, #M/J/AA# Utiliser # # pour borner les dates, sparateur de date = / ou LIKE et les caractres gnriques * et ?. LIKE "JJ/MM/AAAA" ORDER BY DESC et ASC. Associations de critres WHERE avec AND et OR.

P P P

LISTE DES REQUTES FORMULER :


B1 Clients dont le nom commence par M : (Difficult : premire utilisation de LIKE et des caractres gnriques * et ?)

B2 -

Liste des noms, tlphones et adresses des clients qui nont pas de fax (dans lordre des noms des clients) :
(Difficult : premier cas dutilisation de IS NULL ou IS NOT NULL dans une clause WHERE)

B3 -

Liste des fournisseurs qui ont un fax :

Exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 5

B4 -

Nom, prix et stock des produits dont le nom commence par "QU" : (Ordre alpha)

B5 -

Nom et tlphone des fournisseurs installs ailleurs qu'en France ou en Allemagne (par pays) : (Difficult : association de contraintes avec OR ou AND)

B6 -

Produits dont on a un stock entre 10 et 30 (par ordre dcroissant de stock) : Difficult :plage de valeurs entre crochets associe au joker toile *

B7 -

Clients dont le nom commence par une lettre comprise entre A et D :

Exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 6

B8 -

Produits dont le code catgorie se termine par 88 :

B9 -

Produits dont le second signe du code est 1 et le dernier est 8 :

B10 - Commandes reues le 4 du mois (quel que soit le mois et quelle que soit lanne) : (Difficults : respecter la syntaxe contraignante des dates avec LIKE et les jokers)

B11 - Socits clientes dont le nom commence par The (ordre alpha) :

B12 - Messagers dont le n nest pas 2 :

Exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 7

B13 - Noms et tlphones des clients habitant Paris et ayant un fax (ordre dcroissant du nom) :

B14 - Montants des commandes passes en novembre et dcembre 1990 (les plus grosses en tte) :

B15 - Liste des produits indisponibles (ordre alpha) :

Exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 8

REQUTES : EXERCICES SQL ET QBE. Niveau de difficult C (normal).


Apprentissages : Niveau de difficult 3 : Comme niveau A et B + jointure de plusieurs tables : Table1 INNER JOIN Table2 ON Clef externe = Identifiant. Manipulations de dates. Combinaisons de ET et de OU. P P P

LISTE DES REQUTES FORMULER :


C1 Liste des produits avec leur fournisseur, classe par fournisseur, puis par produit :

C2 -

Liste de catgories de produits et des produits les composant (ordre adapt) :

C3 -

Liste des produits achets au fournisseur "Ma maison"

Exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 9

C4 -

Liste des messagers connus de chaque client (au moins une commande reue via ce messager), ordonne par client et par messager :

C5 -

Nom et pays des fournisseurs de poissons et fruits de mer (choisir un ordre intelligent et ne pas afficher de doublons !) :

C6 -

Nom et pays des fournisseurs de poissons et fruits de mer localiss en Sude ET au Japon (toujours sans doublons !) :

C7 -

Liste des clients livrs en 1992 par Speedy Express : ordre ville et date denvoi :

Exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 10

C8 -

Nom des clients ayant command quelque chose en mars 1992 (liste trie par ordre chrono et alpha) :

C9 -

Nom des clients et produits commands dans les commandes davril 1992 (quel que soit le jour) :

C10 - Catgories de produits vendues le 7 janvier 1992 (sans doublons) :

Exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 11

REQUTES : EXERCICES SQL ET QBE : Niveau de difficult 4 : difficile


Apprentissages : Niveau de difficult 4 : AS : modification du nom des champs. Format des chiffres. Calculs : fonctions MIN, MAX, SUM, AVERAGE, COUNT. GROUP BY et HAVING Oprations sur des cumuls Requtes rflexives... P P P P P
D1 Pays avec qui nous avons eu le plus grand chiffre d'affaires en 1991 (les plus gros en tte) :

D2 -

Quel est le salaire moyen de lentreprise ?

D3 -

Quel est le salaire moyen des vendeurs ?

D3 -

Quel est le salaire maximum des vendeurs ?

Exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 12

D4 -

Quels sont les salaires moyens, mini et maxis des vendeurs ?

D4 -

Quel est le nombre demploys par chef ?

D5 -

Quels sont les salaires moyens, mini et maxis des vendeurs par chef ?

D6 -

Quel est le salaire moyen des chefs vendeurs ?

D7 -

Total des commandes reues par pays (en 1991).

Exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 13

D8 -

Nombre de commandes expdies dans les 15 derniers jours, et CA correspondant. Dans la mme requte, calculez la VMC (valeur moyenne de ces commandes) : changez la date du jour de votre ordinateur pour que nous soyons le 1 er avril 92 La fonction date() rend la date du jour et on peut ajouter ou soustraire des entiers (des jours). La fonction Somme(Champ) (ou Sum en anglais) additionne les valeurs de ce champ, la fonction Compte(Champ) dnombre les occurrences de ce champ plein

D9 -

CA par reprsentant (ordre alpha) en septembre 1990.

D10 - Liste des catgories de produits (ordre alpha) commands par chaque client (ordre alpha) en 1991 et CA correspondant

Exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 14

D11 - Combien avons-nous reu de commandes en 1992, et pour quel montant (global et moyen) ?

D12 - Quel est le nombre de produits par catgorie ?

Exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 15

REQUTES CORRIGES : EXERCICES SQL ET QBE. Niveau de difficult : A (trs facile).

A1 -

Liste des employs (nom, prnom, fonction) sans mise en ordre :

SELECT Nom, Prnom, Fonction FROM Employs;

A2 -

Liste des clients (toutes rubriques) :

SELECT * FROM Clients;

A3 - Liste des clients parisiens (toutes rubriques) :

SELECT * FROM Clients WHERE Ville="Paris";

CORRIGS des exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 1

A4 -

Coordonnes des clients rsidant Stuttgart (nom, adresse, tlphone et fax) :

SELECT Socit, Adresse, [Code postal], Ville, Tlphone, Fax FROM Clients WHERE Ville="Stuttgart";

A5

Nom et tlphone de nos clients canadiens (ordre alpha) :

SELECT Socit, Tlphone FROM Clients WHERE Pays="Canada" ORDER BY Socit;

A6 -

Liste des produits dont le stock est infrieur au niveau de rapprovisionnement :

SELECT [Nom du produit],. [Units en stock],. [Niveau de rapprovisionnement] FROM Produits WHERE [Units en stock] < [Niveau de rapprovisionnement];

facultatif

A7 -

Nom et tlphone des fournisseurs non franais (ordre alpha) :

SELECT Socit, Tlphone FROM Fournisseurs WHERE Pays<>"france" ORDER BY Socit;

CORRIGS des exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 2

A8 -

Liste des catgories de produits par ordre alphabtique :

SELECT [Nom de catgorie] FROM Catgories ORDER BY [Nom de catgorie];

A9 -

Liste des commandes (numro de lemploy ayant pris la commande, date et montant) range par employ et par date :

SELECT [#N employ], [Date commande], Montant FROM Commandes ORDER BY [#N employ], [Date commande];

A10 - Liste des noms de messagers dans lordre alphabtique :

SELECT [Nom du messager] FROM Messagers ORDER BY [Nom du messager];

CORRIGS des exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 3

A11 - Liste des noms de nos clients (ordre alpha) chez lesquels nous sommes en contact avec le propritaire :

SELECT Socit FROM Clients WHERE Fonction="propritaire" ORDER BY Socit;

A12 - Liste des produits dont le stock est infrieur 10 (par ordre croissant du niveau de stock) :

SELECT [Nom du produit], [Units en stock] FROM Produits WHERE [Units en stock]<10 ORDER BY [Units en stock];

A13 - Liste des fournisseurs allemands (toutes rubriques et ordre alpha sur nom, puis sur numro) :

SELECT * FROM Fournisseurs WHERE Pays="allemagne" ORDER BY Socit;

CORRIGS des exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 4

SELECT Socit FROM Fournisseurs WHERE Pays="allemagne" ORDER BY [N fournisseur];

A15 - Quelle est la date de naissance de lemploy King ?

SELECT Nom, Prnom, [Date de Naissance] FROM Employs WHERE Nom="King";

A16 - Quels sont les numros de tlphone et de fax du fournisseur Ma Maison ? (afficher aussi sa ville) :

SELECT Socit, Ville, Tlphone, Fax FROM Fournisseurs WHERE Socit="Ma maison";
Remarque : il faut taper soi-mme les guillemets quand la valeur requise comprend un espace.

A17 - Quel est le numro de fax du client Bon app ?

SELECT Socit, Fax FROM Clients WHERE Socit="bon app'";

CORRIGS des exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 5

B1 -

Clients dont le nom commence par M :

SELECT Socit FROM Clients WHERE Socit LIKE "m*";

B2 -

Liste des noms, tlphones et adresses des clients qui nont pas de fax (dans lordre des noms des clients) :

SELECT

Socit, Adresse, [Code postal], Ville, Tlphone FROM Clients WHERE Fax IS NULL ORDER BY Socit;

B3 -

Liste des fournisseurs qui ont un fax :

SELECT Socit, Ville, Fax FROM Fournisseurs WHERE Fax IS NOT NULL;

B4 -

Nom, prix et stock des produits dont le nom commence par "QU" (Ordre alpha) :

SELECT

[Nom du produit], [Prix unitaire], [Units en stock] FROM Produits WHERE [Nom du produit] LIKE "qu*" ORDER BY [Nom du produit];

CORRIGS des exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 6

B5 -

Nom et tlphone des fournisseurs installs ailleurs qu'en France ou en Allemagne (par pays) :

SELECT Socit, Tlphone FROM Fournisseurs WHERE Pays<>"france" AND Pays<>"allemagne";

B6 -

Produits dont on a un stock entre 10 et 30 :

SELECT [Nom du produit], [Units en stock] FROM Produits WHERE [Units en stock] BETWEEN 10 AND 30 ORDER BY [Units en stock] DESC;

B7 -

Clients dont le nom commence par une lettre comprise entre A et D :

SELECT Socit FROM Clients WHERE Socit LIKE "[A-D]*";

B8 -

Produits dont le code catgorie se termine par 88 :

SELECT [Nom du produit] FROM Produits WHERE [#Code catgorie] LIKE "??88"; Remarque : en mode Cration, pas besoin de taper Comme, ni mme les guillemets...

CORRIGS des exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 7

B9 -

Produits dont le second signe du code est 1 et le dernier est 8 :

SELECT [Nom du produit], [#Code catgorie] FROM Produits WHERE [#Code catgorie] LIKE "?1?8";

B10 - Commandes reues le 4 du mois (quel que soit le mois et quelle que soit lanne) :

SELECT [N commande], [Date commande] FROM Commandes WHERE [Date commande] LIKE "04/*/*";
Notez bien quen SQL, la syntaxe relative aux dates nest pas la mme avec WHERE ou BETWEEN (M/A/AA entre # #) et LIKE (JJ/MM/AAAA entre " ").

B11 - Socits clientes dont le nom commence par The (ordre alpha) :

SELECT Socit FROM Clients WHERE Socit LIKE "the*" ORDER BY Socit;

Remarque : simplement taper the*

CORRIGS des exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 8

B12 - Messagers dont le n nest pas 2 :

SELECT [Nom du messager] FROM Messagers WHERE NOT [N messager]=2; ou WHERE [N messager]<>2;

B13 - Noms et tlphones des clients habitant Paris et ayant un fax (ordre dcroissant du nom) : SELECT Socit, Tlphone FROM Clients WHERE (Ville="Paris") AND (Fax IS NOT NULL) ORDER BY Socit DESC;

B14 - Montants des commandes passes en novembre et dcembre 1990 (les plus grosses en tte) :

SELECT Montant, [Date commande] FROM Commandes WHERE [Date commande] BETWEEN #11/1/90# AND #12/31/90# ORDER BY Montant DESC;

B15 - Liste des produits indisponibles (ordre alpha) :

SELECT [Nom du produit], Indisponible FROM Produits WHERE Indisponible=Yes ORDER BY [Nom du produit];

CORRIGS des exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 9

C1 - Liste des produits avec leur fournisseur,


classe par fournisseur, puis par produit :

SELECT [Nom du produit], Socit FROM Fournisseurs, Produits, Fournisseurs INNER JOIN Produits ON [N fournisseur] =[#N fournisseur] ORDER BY Socit, [Nom du produit];

C2 -

Liste de catgories de produits et des produits les composant (ordre adapt) :

SELECT [Nom de catgorie], [Nom du produit] FROM Catgories, Produits, Catgories INNER JOIN Produits ON [Code catgorie] = [#Code catgorie]

ORDER BY [Nom de catgorie], [Nom du produit];

C3 -

Liste des produits achets au fournisseur "Ma maison" :

SELECT [Nom du produit], Socit FROM Fournisseurs, Produits, Fournisseurs INNER JOIN Produits ON [N fournisseur] = [#N fournisseur] WHERE Socit="Ma maison";

C4 -

Liste des messagers connus de chaque client (au moins une commande reue via ce messager), ordonne par client et par messager :

SELECT DISTINCT Socit, [Nom du messager] FROM Clients, Commandes, Messagers, Clients INNER JOIN Commandes ON Clients.[Code client] = Commandes.[#Code client], Messagers INNER JOIN Commandes ON Messagers.[N messager] = Commandes.[#N messager] ORDER BY Socit, [Nom du messager];

CORRIGS des exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 10

C5

Nom et pays des fournisseurs de poissons et fruits de mer


(ordre intelligent et ne pas afficher de doublons !) :

SELECT DISTINCT Socit, Pays FROM Fournisseurs, Produits, Catgories, Fournisseurs INNER JOIN Produits ON [N fournisseur] = [#N fournisseur], Catgories INNER JOIN Produits ON [Code catgorie] =[#Code catgorie]
WHERE [Nom de catgorie]="Poissons et fruits de mer" ORDER BY Pays, Socit;
Je veux LIER Fournisseurs Catgories : Pb : il ny a pas de relation (directe) entre ces deux tables : Pour spcifier que lon ne veut pas de pas de clef externe [#N Catgorie] dans Fournisseurs doublons en mode Cration, on accde aux et pas non plus de [#N Fournisseur] dans Catgories proprits de la requte avec un double clic DONC : la table Produits nest pas directement utile (on ny puise rien pour laffichage ou des calculs, on ny teste La proprit utile est Valeurs distinctes :Non rien pour lextraction ou la mise en ordre), mais elle est indispensable pourtant pour tablir un pont Remarque pour les fainants qui ont de la mmoire (et de bons de liaison entre Fournisseurs et Catgories. yeux) : cest aussi un double clic sur le Oui qui permet de
passer facilement Non.

sur le fond gris autour des tables.

C6 -

Nom et pays des fournisseurs de poissons et fruits de mer localiss en Sude et au Japon (toujours sans doublons !) :

SELECT DISTINCT Socit, Pays FROM Fournisseurs, Produits, Catgories, Fournisseurs INNER JOIN Produits ON [N fournisseur] = [#N fournisseur], Catgories INNER JOIN Produits ON [Code catgorie] =[#Code catgorie]
WHERE (Pays="Sude" OR Pays="japon") AND ([Nom de catgorie]="Poissons et fruits de mer") Notez bien limpact du ET et du OU sur les ORDER BY Pays, Socit; rsultats, et rflchissez longuement pour tre
bien sr davoir compris ce qui se passe. Conseil : ajoutez le champ [Code catgorie] la clause SELECT pour contrler, puis essayez toutes les combinaisons de parenthses dans la clause WHERE. Par exemple, il est clair quil ny a aucun fournisseur qui soit la fois sudois ET japonais

CORRIGS des exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 11

C7 -

Liste des clients livrs en 1992 par Speedy Express : ordre ville et date denvoi :

SELECT Ville, [Date envoi], Socit FROM Clients, Commandes, Messagers, Clients INNER JOIN Commandes ON Clients.[Code client] = Commandes.[#Code client], Messagers INNER JOIN Commandes ON Messagers.[N messager] = Commandes.[#N messager] WHERE ([Date envoi] BETWEEN #1/1/92# AND #12/31/92#) AND ([Nom du messager]="Speedy express") ORDER BY Ville, [Date envoi];

Autre possibilit (plus commode) : WHERE ([Date envoi] LIKE "*/*/1992") AND ([Nom du messager]="Speedy express")

NB : En mode SQL, dans une clause WHERE ou BETWEEN, utilisez les dises et #M/J/AA#
(1 chiffre pour les jours et les mois, 2 chiffres pour lanne).

Dans une clause LIKE, utilisez les guillemets et "JJ/MM/AAAA"


(2 chiffres pour les jours & mois, 4 chiffres pour lanne).

Attention : en mode Cration, le format des dates est toujours J/M/AA (lassistance dAccess est omniprsente dans ce mode). Par contre, la subtilit des dises ou des guillemets (Where, Betwwen ou Like) sapplique ici aussi
On peut difficilement imaginer plus compliqu sans jeter ce logiciel la poubelle !

C8 -

Nom des clients ayant command quelque chose en mars 1992 (liste trie par ordre chrono et alpha) :

SELECT [Date commande], Socit FROM Clients, Commandes, Clients INNER JOIN Commandes ON Clients.[Code client] = Commandes.[#Code client] WHERE ([Date commande] LIKE "*/03/1992") ORDER BY [Date commande], Socit;

CORRIGS des exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 12

C9 -

Nom des clients et produits commands dans les commandes davril 1992 (quel que soit le jour) :

SELECT [Date commande], Socit, [Nom du produit] FROM Clients, Commandes, Produits, [Dtails commandes], Clients INNER JOIN Commandes ON Clients.[Code client] = Commandes.[#Code client], Produits INNER JOIN [Dtails commandes] ON Produits.[Rf produit] = [Dtails commandes].[#Rf produit], Commandes INNER JOIN [Dtails commandes] ON Commandes.[N commande] = [Dtails commandes].[#N commande] WHERE ([Date commande] LIKE "*/04/1992") ORDER BY [Date commande], Socit; C10 - Catgories de produits vendues le 7 janvier 1992 (sans doublons) :

SELECT DISTINCT [Nom de catgorie], [Date commande] FROM Commandes, Catgories, Produits, [Dtails commandes], Catgories INNER JOIN Produits ON Catgories.[Code catgorie] = Produits.[#Code catgorie], Produits INNER JOIN [Dtails commandes] ON Produits.[Rf produit] = [Dtails commandes].[#Rf produit], Commandes INNER JOIN [Dtails commandes] ON Commandes.[N commande] = [Dtails commandes].[#N commande] WHERE ([Date commande] = #1/7/92#);

D1 -

Pays avec qui nous avons eu le plus grand chiffre d'affaires en 1991 (les plus gros en tte) :

SELECT

[Pays livraison], Sum(Montant) AS [Total Montants] FROM Commandes GROUP BY [Pays livraison] ORDER BY Sum(Montant) DESC;

CORRIGS des exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 13

D2 -

Quel est le salaire moyen de lentreprise ?

SELECT Avg([salaire annuel actuel]) AS [Salaire moyen gnral] FROM Employs;

D3 -

Quel est le salaire moyen des vendeurs ?

SELECT Avg([salaire annuel actuel]) AS [Salaire moyen des vendeurs] FROM Employs GROUP BY Fonction HAVING Fonction="reprsentant(e)";

D3 -

Quel est le salaire maximum des vendeurs ?

SELECT Max([salaire annuel actuel]) AS [Salaire maximum des vendeurs] FROM Employs GROUP BY Fonction HAVING Fonction="reprsentant(e)";

D4 -

Quels sont les salaires moyens, mini et maxis des vendeurs ?

SELECT Avg([salaire annuel actuel]) AS [Vendeurs - Salaire moyen], Min([salaire annuel actuel]) AS Mini, Max([salaire annuel actuel]) AS Maxi FROM Employs GROUP BY Fonction HAVING Fonction="reprsentant(e)";

CORRIGS des exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 14

D4 -

Nombre demploys par chef ?

SELECT Chefs.Nom, Count(Employs.[N employ]) AS [dirige (nb de personnes)] FROM Employs, Employs AS Chefs, Employs INNER JOIN Chefs ON Employs.[#Rend compte ] = Chefs.[N employ] GROUP BY Employs.[#Rend compte ], Chefs.Nom HAVING Employs.[#Rend compte ] Is Not Null;

D5 -

Quels sont les salaires moyens, mini et maxis des vendeurs par chef ?

SELECT Chefs.Nom AS Chef, Avg(Employs.[salaire annuel actuel]) AS [Vendeurs - Salaire moyen], Min(Employs.[salaire annuel actuel]) AS Mini, Max(Employs.[salaire annuel actuel]) AS Maxi FROM Employs, Employs AS Chefs, Employs INNER JOIN Chefs ON Employs.[#Rend compte ] = Chefs.[N employ] GROUP BY Chefs.Nom, Employs.Fonction HAVING Employs.Fonction="reprsentant(e)";

D6 -

Salaire moyen des chefs vendeurs ?

SELECT Avg(Employs.[salaire annuel actuel]) AS [Salaire moyen des chefs vendeurs] FROM Employs GROUP BY Employs.Fonction HAVING Employs.Fonction="Chef des ventes";

CORRIGS des exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 15

D7 -

Total des commandes reues par pays (en 1991).

SELECT [Pays livraison], Sum(Montant) AS [CA 1991] FROM Commandes WHERE [Date commande] Like "*/*/1991" GROUP BY [Pays livraison];

D8 -

Nombre de commandes expdies dans les 15 derniers jours, et CA correspondant. Dans la mme requte, calculez la VMC (valeur moyenne de ces commandes) :

SELECT

SUM(Montant) AS [CA des 15 derniers jours], COUNT(Montant) AS [Nombre de commandes], SUM([Montant])/COUNT([Montant]) AS VMC FROM Commandes WHERE [Date commande] BETWEEN Date()-15 AND Date();

D9 -

CA par reprsentant (ordre alpha) en septembre 1990.

SELECT Nom AS Vendeur, Sum(Montant) AS [CA en sept 90] FROM Commandes INNER JOIN Employs ON Commandes.[#N employ] = Employs.[N employ] WHERE [Date commande] Like "*/09/1990" GROUP BY Nom ORDER BY Nom;

CORRIGS des exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 16

D10 - Liste des catgories de produits (ordre alpha) commands par chaque client (ordre alpha) en 1991 et CA correspondant

SELECT Socit, [Nom de catgorie], Sum(Commandes.Montant) AS [CA en 91] FROM Clients, Commandes, [Dtails commandes], Produits, Catgories, Clients INNER JOIN Commandes ON Clients.[Code client] = Commandes.[#Code client], Commandes INNER JOIN [Dtails commandes] ON Commandes.[N commande] = [Dtails commandes].[#N commande], [Dtails commandes] INNER JOIN Produits ON [Dtails commandes].[#Rf produit] = Produits.[Rf produit], Produits INNER JOIN Catgories ON Produits.[#Code catgorie] = Catgories.[Code catgorie] WHERE [Date commande] Like "*/*/1991" GROUP BY Clients.Socit, Catgories.[Nom de catgorie] ORDER BY Clients.Socit, Catgories.[Nom de catgorie];

D11 - Combien avons-nous reu de commandes en 1992, et pour quel montant (global et moyen) ?
SELECT Count(Montant) AS [Nb de commandes en 92], Sum(Montant) AS [CA 92], Avg(Montant) AS [VMC 92] FROM Commandes WHERE Commandes.[Date commande] Like "*/*/1992";

CORRIGS des exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 17

D12 - Quel est le nombre de produits par catgorie ?

SELECT [Nom de catgorie] AS Catgorie, Count([Rf produit]) AS [Nb de produits] FROM Produits INNER JOIN Catgories ON Produits.[#Code catgorie] = Catgories.[Code catgorie] GROUP BY [Nom de catgorie] ORDER BY [Nom de catgorie];

<<

CORRIGS des exercices de requtes : SQL et QBE

. Chouard - Lyce M. Pagnol

Page 18