Exercices SQL corrigés : ORDER BY et LIMIT

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 · niveau 1

Affiche le nom et le salaire de tous les employés, du salaire le plus bas au plus élevé.

Table employees (8 lignes)
idnamedepartmentsalary
1AliceFinance32000
2BobIT41000
3ClaireFinance38000
4DavidHR29000
5EmmaIT50000
6FaridIT47000
7GaelleHR33000
8HugoFinance44000
Voir l’indice

Notions à utiliser : ORDER BY, LIMIT.

Structure de la requête :

SELECT , 
FROM 
ORDER BY  ASC
Voir la correction
SELECT name, salary
FROM employees
ORDER BY salary ASC;

Résultat attendu (8 lignes, dans cet ordre) :

namesalary
David29000
Alice32000
Gaelle33000
Claire38000
Bob41000
Hugo44000
Farid47000
Emma50000

Exercice 2 · niveau 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.

Table employees (8 lignes)
idnamedepartmentsalary
1AliceFinance32000
2BobIT41000
3ClaireFinance38000
4DavidHR29000
5EmmaIT50000
6FaridIT47000
7GaelleHR33000
8HugoFinance44000
Voir l’indice

Notions à utiliser : ORDER BY, LIMIT.

Structure de la requête :

SELECT , , 
FROM 
ORDER BY  ASC,  DESC
Voir la correction
SELECT name, department, salary
FROM employees
ORDER BY department ASC, salary DESC;

Résultat attendu (8 lignes, dans cet ordre) :

namedepartmentsalary
HugoFinance44000
ClaireFinance38000
AliceFinance32000
GaelleHR33000
DavidHR29000
EmmaIT50000
FaridIT47000
BobIT41000

Exercice 3 · niveau 2

Affiche le nom des 3 produits les moins chers, du moins cher au plus cher.

Table products (6 lignes)
idnamecategorypricestock
1KeyboardOffice2540
2MouseOffice150
3ScreenDisplay18012
4HeadsetAudio608
5WebcamOffice450
6SpeakerAudio3525
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 · niveau 2

Affiche le nom des 2 employés les mieux payés, du plus élevé au plus bas salaire.

Table employees (8 lignes)
idnamedepartmentsalary
1AliceFinance32000
2BobIT41000
3ClaireFinance38000
4DavidHR29000
5EmmaIT50000
6FaridIT47000
7GaelleHR33000
8HugoFinance44000
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 · niveau 2

Affiche le nom et le nombre de buts des 3 meilleurs buteurs, du plus grand nombre de buts au plus petit.

Table players (9 lignes)
idnameteam_idpositiongoals
1Alex Moreau1FW9
2Bilal Sow1MF4
3Carl Weber2FW7
4Diego Ruiz2DF1
5Eli Novak3FW6
6Femi Adeyemi4FW11
7Goran Petrov4GK0
8Hugo Lamy5MF5
9Ivan Kral5DF2
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) :

namegoals
Femi Adeyemi11
Alex Moreau9
Carl Weber7

Exercice 6 · niveau 2

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).

Table readings (15 lignes)
idcitydaytemp_maxtemp_minrain_mm
1Paris2025-07-0124150
2Paris2025-07-0227170
3Paris2025-07-0322164.5
4Paris2025-07-04191412
5Paris2025-07-0523130
6Lyon2025-07-0126160
7Lyon2025-07-0229180
8Lyon2025-07-0331190
9Lyon2025-07-0424178.5
10Lyon2025-07-0522153
11Marseille2025-07-0130210
12Marseille2025-07-0232220
13Marseille2025-07-0333230
14Marseille2025-07-0429210
15Marseille2025-07-0528200
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) :

citydaytemp_max
Marseille2025-07-0333
Marseille2025-07-0232
Lyon2025-07-0331

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é.

S’entraîner sur les 7 questions « ORDER BY, LIMIT »