Nous continuons dans notre série d’articles sur le langage SQL et cette fois-ci, nous allons découvrir une fonction. En SQL, pour trouver la valeur maximale dans une colonne de donnée de type numérique ou alphanumérique, il faut utiliser la fonction d’agrégation SQL MAX ().

On peut s’en servir, par exemple, pour connaître le produit le plus cher dans la base de données d’une boutique. Pareillement, pour obtenir la note la plus élevée d’un élève ou encore pour déterminer l’âge maximum d’une personne dans une liste, c’est cette fonction qu’il faut utiliser.

SQL MAX : syntaxe

La syntaxe de la fonction max en SQL est la suivante :

SELECT MAX (nom_colonne) FROM table

Cette fonction peut être combinée avec la commande GROUP BY et la syntaxe ressemblera à ceci : 

SELECT colonne1, MAX (colonne2) FROM table GROUP BY colonne1

Illustration de la fonction MAX ()

Considérons que nous avons la table de données d’un site e-commerce de vente de matériel informatique et que l’on souhaite obtenir la valeur maximum des produits. La table que nous allons utiliser ressemble à ceci :

table-info

Pour afficher le résultat souhaité, nous allons exécuter la commande suivante :

SELECT MAX(prix) FROM info
sql-max

Le résultat ci-dessus montre juste le prix du produit élevé. Toutefois, nous avons la possibilité d’afficher le nom du produit le plus cher en même temps que son prix. Pour ce faire, il faut ajouter le nom ainsi que son id à notre requête :

SELECT id, nom, MAX(prix) FROM info;
max-colonnes

Comment utiliser la fonction MAX () avec la clause GROUP BY ?

Il est possible d’utiliser la clause GROUP BY avec la fonction MAX() pour obtenir la valeur maximum d’une colonne sur chaque groupe. Utilisons la table suivante pour illustrer cela :

table-agent

Pour obtenir les informations sur le lieu et la commission maximale pour chaque agent de chaque lieu à partir de la table agent, l’instruction à exécuter est la suivante :

SELECT Lieu, MAX(commi) FROM agent GROUP BY Lieu;
select-groupby

Comment utiliser la fonction SQL MAX () avec la clause GROUP BY et ORDER BY ?

On peut également utiliser la fonction MAX() avec GROUP BY et ORDER BY afin de grouper le résultat obtenu en fonction d’un champ précis et dans un ordre préétabli.

Par exemple, pour obtenir les données du pays, du lieu et de la commission maximale de la table agent, la requête ressemblera à ceci :

SELECT pays, Lieu, MAX(commi) FROM agent GROUP BY  pays, Lieu ORDER BY pays;
select-max-groupby

Comment utiliser la fonction MAX () avec la clause HAVING ?

HAVING est la clause que l’on utilise avec GROUP BY pour filtrer les groupes de résultats en fonction d’une condition spécifique. On peut inclure cette clause à une requête contenant une fonction MAX() et une instruction GROUP BY.

L’exemple suivant recherche les noms des agents et la commission la plus élevée pour chacun. De plus, il utilise la clause HAVING pour filtrer tous les agents dont la commission la plus élevée est inférieure ou égale à 0.15 :

SELECT
    nom_agent,
    MAX(commi) max_list_price
FROM
agent

GROUP BY
    nom_agent
HAVING 
    MAX(commi) > 0.15
ORDER BY
    max_list_price DESC;

En conclusion, la fonction MAX() ne traite pas les valeurs nulles. Quand il ne trouve aucune ligne à sélectionner, il retourne une valeur nulle. Elle est déterministe lorsqu’elle est employée avec les clauses OVER et ORDER BY.

Nous terminons cet article sur la fonction MAX() avec cette conclusion. Vous connaissez maintenant tous les cas d’utilisation de cette fonction d’agrégation et vous pouvez les appliquer dans vos prochaines requêtes SQL. Si vous souhaitez continuer votre apprentissage, vous pouvez vous rendre sur notre blog, car nous avons plusieurs articles sur ce langage. Nous vous invitons aussi à télécharger gratuitement cette formation sur Spark avec Scala si vous souhaitez augmenter vos compétences en Big Data.


Juvénal JVC

Juvénal est spécialisé depuis 2011 dans la valorisation à large échelle des données. Son but est d'aider les professionnels de la data à développer les compétences indispensables pour réussir dans le Big Data. Il travaille actuellement comme Lead Data Engineer auprès des grands comptes. Lorsqu'il n'est pas en voyage, Juvénal rédige des livres ou est en train de préparer la sortie d'un de  ses livres. Vous pouvez télécharger un extrait de son dernier livre en date ici : https://www.data-transitionnumerique.com/extrait-ecosystme-hadoop/

>