Previous Up Next
Université Lille 3-Charles de GaulleUFR de Mathématiques Sciences Économiques et Sociales

Chapitre 44  La commande SELECT, corrections

Solution de l'exercice 1
SELECT * 
  FROM EMP ;  
Solution de l'exercice 2
SELECT *
  FROM DEPT
;
Solution de l'exercice 3
SELECT NOM, EMBAUCHE, NOSUPR, NODEPT, SALAIRE
  FROM EMP
;
Solution de l'exercice 4
SELECT TITRE
  FROM EMP
;
Solution de l'exercice 5
SELECT DISTINCT TITRE
  FROM EMP
;
Solution de l'exercice 6
SELECT NOM, NOEMP, NODEPT
  FROM EMP 
 WHERE TITRE = 'Secretaire'
;
Remarque.
La valeur Secretaire est entre deux «'» car la colonne TITRE est alpha-numérique, ce qui n'est pas le cas pour NODEPT qui est numérique.
Solution de l'exercice 7
SELECT NOM, NODEPT
  FROM DEPT 
 WHERE NODEPT > 40
;
Solution de l'exercice 8
SELECT NOM, PRENOM
  FROM EMP 
 WHERE NOM < PRENOM
;
Solution de l'exercice 9
SELECT NOM, SALAIRE, NODEPT
  FROM EMP
 WHERE TITRE = 'Representant' 
   AND NODEPT = 35
   AND SALAIRE > 20000
;
Solution de l'exercice 10
SELECT NOM, TITRE, SALAIRE 
  FROM EMP
 WHERE TITRE = 'Representant' 
    OR TITRE = 'President'
;
Solution de l'exercice 11
SELECT NOM, TITRE, NODEPT, SALAIRE
  FROM EMP
 WHERE (TITRE = 'Representant' OR TITRE = 'Secretaire')
   AND NODEPT = 34
;
Remarque.
Si les clauses de restriction sont reliées par «AND» ou «OR», ATTENTION aux parenthèses.
Solution de l'exercice 12
SELECT NOM, TITRE, NODEPT, SALAIRE 
  FROM EMP
 WHERE TITRE = 'Representant'
    OR (TITRE = 'Secretaire' AND NODEPT = 34)
;
Solution de l'exercice 13

Remarque.
La clause
WHERE SAL >= 20000 AND SAL <= 30000
peut s'écrire avec l'opérateur BETWEEN.
SELECT NOM, SALAIRE
  FROM EMP
 WHERE SALAIRE BETWEEN 20000 AND 30000
;
Solution de l'exercice 14

Remarque.
La clause WHERE colonne IN ('val1', 'val2') permet d'éviter WHERE colonne = 'val1' OR colonne = 'val2'
SELECT NOM, TITRE, NODEPT
  FROM EMP
 WHERE TITRE IN ('Representant' , 'Secretaire')
;
Solution de l'exercice 15
SELECT NOM
  FROM EMP
 WHERE NOM LIKE 'H%'
;
Solution de l'exercice 16
SELECT NOM
  FROM EMP
 WHERE NOM LIKE '%n'
;
Solution de l'exercice 17
SELECT NOM
  FROM EMP
 WHERE NOM LIKE '__u%'
;
Solution de l'exercice 18
  SELECT SALAIRE, NOM
    FROM EMP
   WHERE NODEPT = 41 
ORDER BY SALAIRE
;
Solution de l'exercice 19
  SELECT SALAIRE, NOM
    FROM EMP
   WHERE NODEPT = 41 
ORDER BY SALAIRE DESC
;
Solution de l'exercice 20
  SELECT TITRE, SALAIRE, NOM
    FROM EMP
ORDER BY TITRE, SALAIRE DESC
;
Solution de l'exercice 21
  SELECT TX_COMMISSION, SALAIRE, NOM
    FROM EMP
ORDER BY TX_COMMISSION
;
Solution de l'exercice 22
SELECT NOM, SALAIRE, TX_COMMISSION, TITRE 
  FROM EMP
 WHERE TX_COMMISSION IS NULL
;
Solution de l'exercice 23
SELECT NOM, SALAIRE, TX_COMMISSION, TITRE
  FROM EMP
 WHERE TX_COMMISSION IS NOT NULL
;
Solution de l'exercice 24
SELECT NOM, SALAIRE, TX_COMMISSION, TITRE 
FROM EMP
 WHERE TX_COMMISSION < 15
;
Remarque.
Par défaut, les colonnes alphanumériques non renseignées ne sont pas considérées comme une suite d'espaces, les colonnes numériques ne sont pas considérées comme égale à 0.
Solution de l'exercice 25
SELECT NOM, SALAIRE, TX_COMMISSION, SALAIRE * TX_COMMISSION/100 
  FROM EMP 
 WHERE TX_COMMISSION IS NOT NULL
;
Solution de l'exercice 26
  SELECT NOM, SALAIRE, TX_COMMISSION, SALAIRE * TX_COMMISSION/100 
    FROM EMP 
   WHERE TX_COMMISSION IS NOT NULL 
ORDER BY 3
;
Solution de l'exercice 27
SELECT NOM, SALAIRE * (1 + TX_COMMISSION/100) AS "Remuneration totale"
  FROM EMP
;
Remarque.
Certains salaires semblent vides (!!!).
Solution de l'exercice 28
SELECT NOM,
       SALAIRE * (1 + COALESCE(TX_COMMISSION,0)/100) AS "Remuneration totale"
  FROM EMP
;
Solution de l'exercice 29
SELECT NOM, SALAIRE AS "PAR MOIS", ROUND (SALAIRE/150,2) AS "PAR HEURE"
  FROM EMP 
 WHERE NODEPT = 35
;
Solution de l'exercice 30
SELECT NOM ||' '|| PRENOM AS "Nom, Prenom"
  FROM EMP
;
Solution de l'exercice 31
SELECT NOM, NODEPT, 
       CASE WHEN NODEPT=10 THEN 'Vu' 
            WHEN NODEPT=50 THEN 'Pas vu' 
            ELSE 'En cours' 
        END AS "Situation"
  FROM DEPT
;
Solution de l'exercice 32
  SELECT CASE WHEN NODEPT=41 THEN PRENOM
              ELSE NOM
          END AS "NOM OU PRENOM", NODEPT, SALAIRE 
    FROM EMP
ORDER BY 2
;
Solution de l'exercice 33
SELECT SUBSTR (NOM, 1,5)
  FROM EMP
;
Solution de l'exercice 34

Pour la position à partir du début :
SELECT NOM, STRPOS (NOM,'r')
  FROM EMP
;
Pour avoir le résultat à partir de la 3ème lettre, il suffit de « supprimer » les 2 premières...
SELECT NOM, STRPOS (SUBSTR(NOM,3),'r')
  FROM EMP
;
Solution de l'exercice 35
SELECT NOM, UPPER(NOM) , LOWER(NOM)
  FROM EMP 
 WHERE UPPER(NOM) = UPPER('Vrante')
;
Solution de l'exercice 36
SELECT NOM, LENGTH(NOM)
  FROM EMP
;
Solution de l'exercice 37
 SELECT NOM, 'Salaire' AS "TYPE", SALAIRE AS "MONTANT" 
   FROM EMP
UNION
 SELECT NOM, 'Commission' AS "TYPE", SALAIRE * TX_COMMISSION/100  AS "MONTANT"
   FROM EMP
  WHERE TX_COMMISSION IS NOT NULL
;
Solution de l'exercice 38
 SELECT NODEPT  AS "Dep."
   FROM EMP
INTERSECT 
 SELECT NODEPT AS "Dep."
   FROM DEPT
;
Solution de l'exercice 39
 SELECT NODEPT AS "Dep."
   FROM DEPT
EXCEPT
 SELECT NODEPT AS "Dep."
   FROM EMP
;
D.Gonzalez (gonzalez@univ-lille3.fr) en date du th , 

Previous Up Next