Exercices SQL corrigés : ORDER BY et LIMIT
Mis à jour le
ORDER BY trie (ASC croissant, DESC décroissant) ; LIMIT garde les n premières lignes. Ces 6 exercices vont du niveau 1 au niveau 2 ; ils utilisent la syntaxe de SQLite, le moteur SQL de SpeedQL.
Conseil : Ajoute une deuxième colonne de tri pour départager les égalités.
Relire la fiche « ORDER BY, LIMIT » de l’aide-mémoire
Exercice 1
Affiche le nom et le salaire de tous les employés, du salaire le plus bas au plus élevé.
| id | name | department | salary |
|---|---|---|---|
| 1 | Alice | Finance | 32000 |
| 2 | Bob | IT | 41000 |
| 3 | Claire | Finance | 38000 |
| 4 | David | HR | 29000 |
| 5 | Emma | IT | 50000 |
| 6 | Farid | IT | 47000 |
| 7 | Gaelle | HR | 33000 |
| 8 | Hugo | Finance | 44000 |
Voir l’indice
Notions à utiliser : ORDER BY, LIMIT.
Structure de la requête :
SELECT …, …
FROM …
ORDER BY … ASCVoir la correction
SELECT name, salary
FROM employees
ORDER BY salary ASC;Résultat attendu (8 lignes, dans cet ordre) :
| name | salary |
|---|---|
| David | 29000 |
| Alice | 32000 |
| Gaelle | 33000 |
| Claire | 38000 |
| Bob | 41000 |
| Hugo | 44000 |
| Farid | 47000 |
| Emma | 50000 |
Exercice 2
Affiche le nom, le département et le salaire des employés, triés par département (ordre alphabétique) puis, dans chaque département, du salaire le plus élevé au plus bas.
| id | name | department | salary |
|---|---|---|---|
| 1 | Alice | Finance | 32000 |
| 2 | Bob | IT | 41000 |
| 3 | Claire | Finance | 38000 |
| 4 | David | HR | 29000 |
| 5 | Emma | IT | 50000 |
| 6 | Farid | IT | 47000 |
| 7 | Gaelle | HR | 33000 |
| 8 | Hugo | Finance | 44000 |
Voir l’indice
Notions à utiliser : ORDER BY, LIMIT.
Structure de la requête :
SELECT …, …, …
FROM …
ORDER BY … ASC, … DESCVoir la correction
SELECT name, department, salary
FROM employees
ORDER BY department ASC, salary DESC;Résultat attendu (8 lignes, dans cet ordre) :
| name | department | salary |
|---|---|---|
| Hugo | Finance | 44000 |
| Claire | Finance | 38000 |
| Alice | Finance | 32000 |
| Gaelle | HR | 33000 |
| David | HR | 29000 |
| Emma | IT | 50000 |
| Farid | IT | 47000 |
| Bob | IT | 41000 |
Exercice 3
Affiche le nom des 3 produits les moins chers, du moins cher au plus cher.
| id | name | category | price | stock |
|---|---|---|---|---|
| 1 | Keyboard | Office | 25 | 40 |
| 2 | Mouse | Office | 15 | 0 |
| 3 | Screen | Display | 180 | 12 |
| 4 | Headset | Audio | 60 | 8 |
| 5 | Webcam | Office | 45 | 0 |
| 6 | Speaker | Audio | 35 | 25 |
Voir l’indice
Notions à utiliser : ORDER BY, LIMIT.
Structure de la requête :
SELECT …
FROM …
ORDER BY … ASC
LIMIT …Voir la correction
SELECT name
FROM products
ORDER BY price ASC
LIMIT 3;Résultat attendu (3 lignes, dans cet ordre) :
| name |
|---|
| Mouse |
| Keyboard |
| Speaker |
Exercice 4
Affiche le nom des 2 employés les mieux payés, du plus élevé au plus bas salaire.
| id | name | department | salary |
|---|---|---|---|
| 1 | Alice | Finance | 32000 |
| 2 | Bob | IT | 41000 |
| 3 | Claire | Finance | 38000 |
| 4 | David | HR | 29000 |
| 5 | Emma | IT | 50000 |
| 6 | Farid | IT | 47000 |
| 7 | Gaelle | HR | 33000 |
| 8 | Hugo | Finance | 44000 |
Voir l’indice
Notions à utiliser : ORDER BY, LIMIT.
Structure de la requête :
SELECT …
FROM …
ORDER BY … DESC
LIMIT …Voir la correction
SELECT name
FROM employees
ORDER BY salary DESC
LIMIT 2;Résultat attendu (2 lignes, dans cet ordre) :
| name |
|---|
| Emma |
| Farid |
Exercice 5
Affiche le nom et le nombre de buts des 3 meilleurs buteurs, du plus grand nombre de buts au plus petit.
| id | name | team_id | position | goals |
|---|---|---|---|---|
| 1 | Alex Moreau | 1 | FW | 9 |
| 2 | Bilal Sow | 1 | MF | 4 |
| 3 | Carl Weber | 2 | FW | 7 |
| 4 | Diego Ruiz | 2 | DF | 1 |
| 5 | Eli Novak | 3 | FW | 6 |
| 6 | Femi Adeyemi | 4 | FW | 11 |
| 7 | Goran Petrov | 4 | GK | 0 |
| 8 | Hugo Lamy | 5 | MF | 5 |
| 9 | Ivan Kral | 5 | DF | 2 |
Voir l’indice
Notions à utiliser : ORDER BY, LIMIT.
Structure de la requête :
SELECT …, …
FROM …
ORDER BY … DESC
LIMIT …Voir la correction
SELECT name, goals
FROM players
ORDER BY goals DESC
LIMIT 3;Résultat attendu (3 lignes, dans cet ordre) :
| name | goals |
|---|---|
| Femi Adeyemi | 11 |
| Alex Moreau | 9 |
| Carl Weber | 7 |
Exercice 6
Affiche la ville, le jour et la température maximale des 3 relevés les plus chauds, du plus chaud au moins chaud (en cas d'égalité, par jour puis par ville).
| id | city | day | temp_max | temp_min | rain_mm |
|---|---|---|---|---|---|
| 1 | Paris | 2025-07-01 | 24 | 15 | 0 |
| 2 | Paris | 2025-07-02 | 27 | 17 | 0 |
| 3 | Paris | 2025-07-03 | 22 | 16 | 4.5 |
| 4 | Paris | 2025-07-04 | 19 | 14 | 12 |
| 5 | Paris | 2025-07-05 | 23 | 13 | 0 |
| 6 | Lyon | 2025-07-01 | 26 | 16 | 0 |
| 7 | Lyon | 2025-07-02 | 29 | 18 | 0 |
| 8 | Lyon | 2025-07-03 | 31 | 19 | 0 |
| 9 | Lyon | 2025-07-04 | 24 | 17 | 8.5 |
| 10 | Lyon | 2025-07-05 | 22 | 15 | 3 |
| 11 | Marseille | 2025-07-01 | 30 | 21 | 0 |
| 12 | Marseille | 2025-07-02 | 32 | 22 | 0 |
| 13 | Marseille | 2025-07-03 | 33 | 23 | 0 |
| 14 | Marseille | 2025-07-04 | 29 | 21 | 0 |
| 15 | Marseille | 2025-07-05 | 28 | 20 | 0 |
Voir l’indice
Notions à utiliser : ORDER BY, LIMIT.
Structure de la requête :
SELECT …, …, …
FROM …
ORDER BY … DESC, …, …
LIMIT …Voir la correction
SELECT city, day, temp_max
FROM readings
ORDER BY temp_max DESC, day, city
LIMIT 3;Résultat attendu (3 lignes, dans cet ordre) :
| city | day | temp_max |
|---|---|---|
| Marseille | 2025-07-03 | 33 |
| Marseille | 2025-07-02 | 32 |
| Lyon | 2025-07-03 | 31 |
S’entraîner avec correction automatique
Dans SpeedQL, tu écris ta requête et elle est vérifiée tout de suite, sur ces tables puis sur un jeu de données caché.