Problème :
Vous voulez trouver quelles lignes stockent la plus grande valeur numérique dans une colonne donnée.
Exemple :
Notre base de données a une table nommée student
avec des données dans les colonnes suivantes :id
, first_name
, last_name
, et grade
.
identifiant | prénom | nom_de_famille | classe |
---|---|---|---|
1 | Lisa | Jackson | 3 |
2 | Gary | Larry | 5 |
3 | Tom | Michelin | 2 |
4 | Martin | Aboyeur | 2 |
5 | Élie | Noir | 5 |
6 | Marie | Simpson | 4 |
Trouvons les étudiants qui ont les meilleures notes.
Solution :
SELECT id, first_name, last_name, grade FROM student WHERE grade = (SELECT MAX(grade) FROM student);
Voici le résultat :
identifiant | prénom | nom_de_famille | classe |
---|---|---|---|
2 | Gary | Larry | 5 |
5 | Élie | Noir | 5 |
Discussion :
Pour trouver la valeur maximale d'une colonne, utilisez le MAX()
fonction d'agrégation ; il faut un nom de colonne ou une expression pour trouver la valeur maximale. Dans notre exemple, la sous-requête renvoie le nombre le plus élevé dans la colonne note (sous-requête :SELECT MAX(grade) FROM student
). La requête principale affiche l'identifiant, le prénom et le nom et leur note. Pour afficher uniquement les lignes avec la valeur maximale parmi toutes les valeurs de la colonne (par exemple, SELECT MAX(grade) FROM student
), utilisez WHERE avec une sous-requête. Dans WHERE, mettez le nom de la colonne avec la valeur comparable à la valeur renvoyée par la fonction d'agrégation dans la sous-requête (dans notre exemple :WHERE grade = (SELECT MAX(grade) FROM student)
).