Académique Documents
Professionnel Documents
Culture Documents
matricule Nom
7900 GASTON
10101 Nomseterminantpareon
(2 rows)
nde
Le résultat est identique à celui de la 2 solution proposée à la question 17.
25. Liste des analystes, des vendeurs et des pupitreurs dont le nom comporte le
lettre (E, e). Vous n'utiliserez aucune des fonctions de conversion vues jusqu'ici.
A.
A.Opérateurs arithmétiques (+, -, *, /) Matricule nom salaire 1999
7876 DUPLAT 7455,00F
30. Revenu global et emploi pour les secrétaires et les vendeurs. Vous calculerez le revenu 7900 GASTON 7297,50F
global une fois sans utiliser la fonction IFNULL, une autre fois en utilisant cette fonction et 7769 PATRICE 7245,00F
en attribuant une commission égale à 0 par défaut. 7738 MARECHAL 7245,00F
(4 rows)
SELECT nom, emploi, salaire + com
FROM emp
WHERE lowercase(emploi) IN ('secretaire', 'vendeur') ; 33. Calculer le rapport salaire/commission pour chaque employé qui perçoit une
commission ( ]0 ; + ∞[ ). Vous donnerez un titre à la colonne calculée.
Nom Emploi Col3
PAITEL SECRETAIRE 7900,00F SELECT nom, salaire, com, float4 (salaire / com) AS " Rapport Salaire/Com "
DUPLAT SECRETAIRE FROM emp
GASTON SECRETAIRE WHERE com > 0;
BOITEL SECRETAIRE
ALLAIN VENDEUR 8200,00F Nom salaire com rapport salaire/com
WAGNER VENDEUR 8750,00F ALLAIN 7900,00F 300,00F 26,33
MARTIAL VENDEUR 8650,00F WAGNER 8250,00F 500,00F 16,50
PATRICE SECRETAIRE MARTIAL 7250,00F 1400,00F 5,18
Nomseterminantpareo SECRETAIRE (3 rows)
n
(9 rows)
C.
C.Chaînes de caractères dans les résultats
SELECT nom, emploi, salaire + ifnull (com, 0)
FROM emp 34. Annoncez le Président des employés.
WHERE lowercase(emploi) IN ('secretaire', 'vendeur') ;
SELECT ‘Le Président de la société est :‘, nom
Nom Emploi Col3 FROM emp
PAITEL SECRETAIRE 7900,00F WHERE mat_chef IS NULL ;
DUPLAT SECRETAIRE 7100,00F
GASTON SECRETAIRE 6950,00F col1 Nom
BOITEL SECRETAIRE 7300,00F Le Président de la société est : GARNIER
ALLAIN VENDEUR 8200,00F (1 row)
WAGNER VENDEUR 8750,00F
MARTIAL VENDEUR 8650,00F
PATRICE SECRETAIRE 6900,00F 35. Pour les analystes et vendeurs, annoncez leur nom, leur emploi et leur salaire.
Nomseterminantpareo SECRETAIRE 7500,00F
n SELECT ‘Le salarié’, nom, ‘travaille comme‘, emploi, ‘pour’, salaire
(9 rows) FROM emp
WHERE uppercase(emploi) IN (‘ANALYSTE’, ‘VENDEUR’) ;
31. Augmentation de 20 % du budget pour les divisions dont le libellé comporte la col1 Nom col3 Emploi col5 salaire
lettre (C, c). Le salarié MARTIN travaille comme ANALYSTE pour 8000,00F
Le salarié GUILLAUM travaille comme ANALYSTE pour 9000,00F
SELECT nom_div, budget, budget*1,2 E
FROM dept Le salarié ALLAIN travaille comme VENDEUR pour 7900,00F
WHERE uppercase (nom_div) LIKE ‘%C%’ ; Le salarié WAGNER travaille comme VENDEUR pour 8250,00F
Le salarié MARTIAL travaille comme VENDEUR pour 7250,00F
Le salarié PATRICE travaille comme VENDEUR pour 6900,00F
(6 rows)
36. Liste des chefs de publicité et directeurs dans l’ordre décroissant de l’emploi. A.
A.Jointure interne 43. Quels sont les différents noms de division (dans l’ordre croissant) où l’on
trouve des postes de Directeur ?
SELECT matricule, nom, emploi 39. Donner les différentes divisions et leur budget où l’on trouve des postes
FROM emp d’analyste et de vendeur. L'usage de l'opérateur ensembliste IN vous strictement défendu SELECT nom_div
WHERE uppercase (emploi) IN (‘CHEF PUBLICITE’, ’DIRECTEUR’) pour cette question. FROM emp e, dept d
ORDER BY emploi DESC ; WHERE e.division = d.division
SELECT DISTINCT nom_div, budget, emploi AND uppercase (emploi) = ‘DIRECTEUR’
matricule nom Emploi FROM dept, emp ORDER BY nom_div ;
7738 MARECHAL CHEF PUBLICITE WHERE dept.division = emp.division
7658 BASILE CHEF PUBLICITE AND (uppercase (emploi) = ‘ANALYSTE’ Division
7566 JOSEPH DIRECTEUR OR uppercase (emploi) = ‘VENDEUR’) ; Direction
7698 DUPONT DIRECTEUR Informatique
7782 DUVAL DIRECTEUR nom_div budget emploi Vente
(6 rows) Informatique 650780,00F ANALYSTE (3 rows)
Vente 400550,00F VENDEUR
(2 rows) 44. Nom, salaire (renommé) et salaire majoré de 4% (renommé) des employés de
37. Triez les employés dans l’ordre croissant de leur emploi et dans l’ordre la division informatique. On fera apparaître l’augmentation détaillée comme suit : salaire,
décroissant de leur salaire en utilisant la position des colonnes. majoration, salaire majoré.
40. Liste des chefs de publicité (matricule, nom, salaire) travaillant à Paris.
SELECT nom, emploi, salaire SELECT nom, salaire AS actuel, (salaire*0,04) AS majoration, salaire * 1,04 AS majoré
FROM emp SELECT matricule, nom, salaire FROM dept d, emp e
ORDER BY 2, 3 DESC ; FROM dept, emp, batiment WHERE d.division = e.division
WHERE dept.division = emp.division AND lowercase (nom_div) = ‘informatique’ ;
AND batiment.batiment = dept.batiment
nom emploi salaire AND uppercase (emploi) = ‘CHEF PUBLICITE’ nom actuel majoration majoré
GUILLAUME ANALYSTE 9000,00F AND lowercase (ville) = ‘paris’ ; JOSEPH 9975,00F 399,00F 10374,00F
MARTIN ANALYSTE 8000,00F MARTIN 8000,00F 320,00F 8320,00F
BASIILE CHEF PUBLICITE 9500,00F matricule nom salaire DUPLAT 7100,00F 284,00F 7384,00F
MARECHAL CHEF PUBLICITE 6900,00F 7658 BASILE 9500,00F MARTIN 8000,00F 320,00F 8320,00F
JOSEPH DIRECTEUR 9975,00F 7738 MARECHAL 6900,00F GUILLAUME 9000,00F 360,00F 9360,00F
DUVAL DIRECTEUR 9450,00F (2 rows) (5 rows)
DUPONT DIRECTEUR 7850,00F
GARNIER PRESIDENT 15000,00F
PIERRE PUPITREUR 8000,00F 41. Liste des employés (nom, emploi, salaire, com) de la division des ventes par C.
C.Auto-jointure
PAITEL SECRETAIRE 7900,00F ordre croissant de salaire et décroissant de commission.
BOITEL SECRETAIRE 7300,00F 45. Afficher le nom et le salaire des employés avec le nom et le salaire de leur chef
DUPLAT SECRETAIRE 7100,00F SELECT nom, emploi, salaire, com respectif et, pour ces chefs, le nom et le salaire de leur chef respectif.
GASTON SECRETAIRE 6950,00F FROM dept, emp
WAGNER VENDEUR 8250,00F WHERE dept.division = emp.division SELECT e.nom, e.salaire, e1.nom, e1.salaire, e2.nom, e2.salaire
ALLAIN VENDEUR 7900,00F AND nom_div = ‘Vente’ FROM emp e, emp e1, emp e2
MARTIAL VENDEUR 7250,00F ORDER BY salaire, 4 DESC ; WHERE e.mat_chef = e1.matricule
PATRICE VENDEUR 6900,00F AND e1.mat_chef = e2.matricule ;
nomseterminantpareon secretaire 7500,00F Nom emploi salaire com
(18 rows) PATRICE VENDEUR 6900,00F nom Salaire nom salaire nom salaire
GASTON SECRETAIRE 6950,00F BASILE 9500,00F DUVAL 9450,00F GARNIER 15000,00F
MARTIAL VENDEUR 7250,00F 1400,00F GASTON 6950,00F DUPONT 7850,00F GARNIER 15000,00F
38. Liste des employés de la division 30 dans l’ordre décroissant de leur "revenu Nomseterminantpareon secretaire 7500,00F WAGNER 8250,00F DUPONT 7850,00F GARNIER 15000,00F
global" ( 0 ≤ com ≤ +∞ ) (la colonne calculée apparaîtra sous cette appellation). DUPONT DIRECTEUR 7850,00F MARECHAL 6900,00F DUVAL 9450,00F GARNIER 15000,00F
ALLAIN VENDEUR 7900,00F 300,00F nomseterminantpareon 7500,00F DUPONT 7850,00F GARNIER 15000,00F
SELECT nom, salaire + com AS " revenu global " PAITEL SECRETAIRE 7900,00F 0,00F MARTIAL 7250,00F DUPONT 7850,00F GARNIER 15000,00F
FROM emp WAGNER VENDEUR 8250,00F 500,00F PATRICE 6900,00F DUPONT 7850,00F GARNIER 15000,00F
WHERE com IS NOT NULL (8 rows) DUPLAT 7100,00F JOSEPH 9975,00F GARNIER 15000,00F
ORDER BY " revenu global " ; BOITEL 7300,00F DUVAL 9450,00F GARNIER 15000,00F
PIERRE 8000,00F JOSEPH 9975,00F GARNIER 15000,00F
nom Revenu global B.
B.Alias ALLAIN 7900,00F DUPONT 7850,00F GARNIER 15000,00F
WAGNER 8750,00F MARTIN 8000,00F JOSEPH 9975,00F GARNIER 15000,00F
MARTIAL 8650,00F 42. Liste des différents codes postaux et villes des employés ne gagnant pas entre GUILLAUME 9000,00F JOSEPH 9975,00F GARNIER 15000,00F
ALLAIN 8200,00F 5000 F et 8000 F. PAITEL 7900,00F DUPONT 7850,00F GARNIER 15000,00F
PAITEL 7900,00F (14 rows)
(4 rows) SELECT DISTINCT code_postal, ville
FROM emp, e, dept d, batiment b
La clause de tri s'appliquant sur la table résultat, on peut utiliser le titre donné à la colonne. WHERE e.division = d.division
AND b.batiment = d.batiment
AND salaire NOT BETWEEN 5000 AND 8000 ;
Code_postal ville
35000 Rennes
57. Nom, emploi, salaire des personnels qui touchent plus que tous les salariés du moy. diff. salaires Nom emploi salaire embauche
département Informatique. 8528,33F DUVAL DIRECTEUR 9450,00F 09/06/91
(1 row) GARNIER PRESIDENT 15000,00F 01/05/91
SELECT nom, emploi, salaire GUILLAUME ANALYSTE 9000,00F 03/12/91
FROM emp 61. Donner la moyenne des salaires des employés. JOSEPH DIRECTEUR 9975,00F 02/05/91
WHERE salaire > ALL ( SELECT salaire BASILE CHEF PUBLICITE 9500,00F 25/06/92
FROM emp SELECT AVG (salaire) AS " moyenne salaires " (5 rows)
WHERE division = ( SELECT division FROM emp ;
FROM dept
lowercase(nom_div) = Moyenne salaires 66. Compter le nombre de divisions différentes qui emploient soit des analystes,
'informatique') ; 8373,61F soit des vendeurs dont le salaire varie entre 4000 F et 8000 F et qui ne touchent pas de
(1 row) commission ( [0 ; + ∞ [ ).
nom Emploi Salaire
GARNIER PRESIDENT 15000,00F 62. Donner la moyenne des revenus globaux des employés (en conservant les SELECT COUNT (DISTINCT division) as résultat
(1 row) commissions pouvant être à NULL). FROM emp
WHERE uppercase (emploi) = 'ANALYSTE'’
SELECT AVG (salaire + com) AS " moy. revenus globaux " OR (uppercase (emploi) = 'VENDEUR'
E.
E.Prédicat EXISTS FROM emp ; AND salaire BETWEEN 4000 AND 8000
AND com IS NULL) ;
58. Quelles divisions (libellé, budget) emploient des salariés à plus de 9000 F ? moy. revenus globaux
8375,00F Résultat
SELECT nom_div, budget (1 row) 2
FROM dept d (1 row)
WHERE EXISTS ( SELECT *
FROM emp e 63. Donner la moyenne des revenus globaux des employés (en éliminant les
WHERE e.division = d.division commissions pouvant être à NULL). 67. Nombre de divisions implantées à Rennes.
AND salaire > 9000) ;
SELECT AVG (salaire + com) AS " moy. revenus globaux " SELECT count(*) as nb_div_Rennes
Division nom_div budget batiment FROM emp FROM dept d, batiment b
10 Direction 150000,00F A WHERE com IS NOT NULL ; WHERE d.batiment = b.batiment
20 Informatique 650780,00F A AND lowercase (ville) = 'rennes' ;
(2 rows) moy. revenus globaux
8375,00F nb_div_rennes
(1 row) 2
(1 row)
On constate, en effet, que la fonction d’agrégation AVG ignore la valeur NULL que peut
posséder une donnée numérique utilisée dans des calculs.
Question : Donner la moyenne des revenus globaux des employés parisiens sachant que si
leur commission est indéterminée, elle sera fixée à 6000 F par défaut. Vous utiliserez une
jointure simple et une sous-requête.
moyenne_revenus
15022,50F
(1 row)