- 1 1. Introduction
- 2 2. Utilisation de base de la fonction MAX
- 3 3. Récupération de la valeur maximale avec des conditions
- 4 4. Comment récupérer la valeur maximale pour chaque groupe
- 5 5. Comment récupérer l’enregistrement complet avec la valeur maximale
- 6 6. Considérations importantes lors de l’utilisation de la fonction MAX
- 7 7. FAQ : Questions fréquemment posées
- 7.1 Q1 : La fonction MAX peut‑elle être utilisée sur plusieurs colonnes en même temps ?
- 7.2 Q2 : Que se passe-t-il lorsque la fonction MAX est appliquée à une colonne de type chaîne ?
- 7.3 Q3 : Quelle est la différence entre la fonction MAX et la clause ORDER BY ?
- 7.4 Q4 : La fonction MAX fonctionne-t-elle correctement lorsque des valeurs NULL sont incluses ?
- 7.5 Q5 : Comment améliorer les performances lors de l’utilisation de la fonction MAX ?
- 7.6 Q6 : Que se passe-t-il lorsqu’on combine MAX avec la clause GROUP BY ?
- 7.7 Q7 : Si plusieurs enregistrements partagent la valeur maximale, comment les récupérer tous ?
- 7.8 Q8 : La fonction MAX peut-elle être utilisée avec des fonctions de fenêtre ?
- 8 8. Résumé
1. Introduction
MySQL est un système de gestion de bases de données largement utilisé dans le monde entier. Parmi ses nombreuses fonctionnalités, la fonction MAX est une fonction d’agrégation importante fréquemment utilisée dans l’analyse de données et la génération de rapports. En utilisant cette fonction, vous pouvez facilement récupérer la valeur maximale d’une colonne spécifiée.
Cet article explique clairement tout, depuis l’utilisation de base de la fonction MAX de MySQL jusqu’aux exemples avancés et aux considérations importantes. Il est conçu pour être utile tant aux débutants qu’aux utilisateurs intermédiaires, alors n’hésitez pas à l’utiliser comme référence.
2. Utilisation de base de la fonction MAX
La fonction MAX peut être utilisée avec divers types de données, y compris les valeurs numériques, les dates et les chaînes de caractères. Dans cette section, nous expliquerons l’utilisation de base en détail.
Syntaxe de la fonction MAX
Voici la syntaxe de base de la fonction MAX.
SELECT MAX(column_name) FROM table_name;
En utilisant cette syntaxe, vous pouvez récupérer la valeur maximale de la colonne spécifiée.
Exemple : Utilisation de MAX avec une colonne numérique
L’exemple suivant récupère le salaire le plus élevé de la table des employés.
SELECT MAX(salary) FROM employees;
Exemple de sortie :
| MAX(salary) |
|---|
| 120000 |
Ce résultat indique que la valeur maximale dans la colonne salary est 120000.
Exemple : Utilisation de MAX avec une colonne de date
Pour récupérer la date d’embauche la plus récente des employés, utilisez la requête suivante :
SELECT MAX(hire_date) FROM employees;
Exemple de sortie :
| MAX(hire_date) |
|---|
| 2025-01-01 |
Ce résultat montre que la date d’embauche la plus récente est 2025-01-01.
Exemple : Utilisation de MAX avec une colonne de chaîne
La fonction MAX peut également être utilisée avec des colonnes de chaînes. Pour les chaînes, elle renvoie la valeur qui apparaît en dernier dans l’ordre lexicographique (dictionnaire).
SELECT MAX(last_name) FROM employees;
Exemple de sortie :
| MAX(last_name) |
|---|
| Yamamoto |
Ce résultat indique que Yamamoto est le nom qui apparaît en dernier dans l’ordre alphabétique (lexicographique).
3. Récupération de la valeur maximale avec des conditions
La fonction MAX peut également être utilisée avec des conditions. Dans cette section, nous expliquons comment récupérer une valeur maximale sous des conditions spécifiques.
Combinaison avec la clause WHERE
Pour récupérer la valeur maximale avec des conditions spécifiques, utilisez la clause WHERE.
Exemple : Récupérer le salaire le plus élevé parmi les employés dont l’ID de département est 10
SELECT MAX(salary) FROM employees WHERE department_id = 10;
Exemple de sortie :
| MAX(salary) |
|---|
| 90000 |
Cette requête récupère le salaire maximal parmi les employés dont l’ID de département est 10.
Exemple d’entreprise pratique
Vous pouvez utiliser la même syntaxe pour récupérer le coût maximal lié à un projet spécifique.
SELECT MAX(cost) FROM projects WHERE project_status = 'active';
Cette requête récupère le coût maximal parmi les projets avec le statut active.
4. Comment récupérer la valeur maximale pour chaque groupe
En utilisant la clause GROUP BY de MySQL, vous pouvez récupérer la valeur maximale pour chaque groupe. Par exemple, cela est très utile lors de l’analyse de données par regroupement, comme le salaire le plus élevé par département ou les ventes maximales par mois. Dans cette section, nous expliquons en détail comment récupérer les valeurs maximales par groupe.
Syntaxe de base
Pour récupérer la valeur maximale pour chaque groupe, écrivez la requête comme suit :
SELECT grouping_column, MAX(target_column)
FROM table_name
GROUP BY grouping_column;
Avec cette syntaxe, MySQL regroupe les données en fonction de la colonne spécifiée et renvoie la valeur maximale au sein de chaque groupe.
Exemple : Récupérer le salaire le plus élevé par département
La requête suivante récupère le salaire le plus élevé par département de la table des employés.
SELECT department_id, MAX(salary)
FROM employees
GROUP BY department_id;
Exemple de sortie :
| department_id | MAX(salary) |
|---|---|
| 1 | 120000 |
| 2 | 90000 |
| 3 | 80000 |
Ce résultat montre le salaire maximal (MAX(salary)) pour chaque département (department_id).
Exemple : Récupérer les ventes maximales par mois
Pour récupérer le montant maximal des ventes pour chaque mois à partir d’une table de ventes, écrivez la requête comme suit :
SELECT DATE_FORMAT(sale_date, '%Y-%m') AS sale_month, MAX(amount)
FROM sales
GROUP BY sale_month;
Exemple de sortie :
| sale_month | MAX(amount) |
|---|---|
| 2025-01 | 50000 |
| 2025-02 | 70000 |
| 2025-03 | 60000 |
Dans cette requête, la colonne sale_date est formatée en année‑mois (%Y-%m), et le montant maximal des ventes est récupéré pour chaque mois.
Remarques importantes lors de l’utilisation de GROUP BY
- Restrictions sur les colonnes incluses dans la clause SELECT Lors de l’utilisation de la clause
GROUP BY, les colonnes incluses dans la clauseSELECTdoivent appartenir à l’une des catégories suivantes :
- Colonnes spécifiées dans la clause
GROUP BY - Fonctions d’agrégation (par ex., MAX, SUM, COUNT, etc.) Exemple : la requête suivante entraînera une erreur.
SELECT department_id, salary FROM employees GROUP BY department_id;
Raison : salary n’est pas inclus dans une fonction d’agrégation ou dans la clause GROUP BY.
- Gestion des valeurs NULL Si la colonne de regroupement contient des valeurs NULL, ces valeurs NULL sont traitées comme un groupe distinct. Exemple : les enregistrements avec un ID de département NULL sont également calculés comme un groupe.
- Optimisation des performances Lors du regroupement de grandes quantités de données, l’utilisation d’index peut améliorer les performances des requêtes. Ajoutez des index selon les besoins.
5. Comment récupérer l’enregistrement complet avec la valeur maximale
Utiliser la fonction MAX de MySQL vous permet de récupérer la valeur maximale d’une colonne spécifique. Cependant, elle ne renvoie pas automatiquement l’enregistrement complet contenant cette valeur maximale. Dans l’analyse de données réelle et les applications, vous avez souvent besoin non seulement de la valeur maximale elle‑-même, mais aussi d’informations connexes provenant d’autres colonnes.
Dans cette section, nous expliquons en détail comment récupérer l’enregistrement complet contenant la valeur maximale.
Méthode 1 : Utiliser une sous‑requête
Vous pouvez utiliser une sous‑requête pour récupérer les enregistrements contenant la valeur maximale dans une colonne spécifique.
Exemple : Récupérer les informations de l’employé avec le salaire le plus élevé
SELECT *
FROM employees
WHERE salary = (SELECT MAX(salary) FROM employees);
Exemple de sortie :
| employee_id | name | salary | department_id |
|---|---|---|---|
| 101 | Tanaka | 120000 | 1 |
Fonctionnement de cette requête :
- La sous‑requête
(SELECT MAX(salary) FROM employees)récupère le salaire le plus élevé. - La requête externe récupère l’enregistrement complet correspondant à ce salaire le plus élevé.
Méthode 2 : Utiliser JOIN
Utiliser JOIN vous permet de créer des requêtes plus flexibles.
Exemple : Récupérer les employés avec le salaire le plus élevé par département
SELECT e.*
FROM employees e
JOIN (
SELECT department_id, MAX(salary) AS max_salary
FROM employees
GROUP BY department_id
) subquery
ON e.department_id = subquery.department_id
AND e.salary = subquery.max_salary;
Exemple de sortie :
| employee_id | name | salary | department_id |
|---|---|---|---|
| 101 | Tanaka | 120000 | 1 |
| 202 | Suzuki | 90000 | 2 |
Fonctionnement de cette requête :
- La sous‑requête calcule le salaire le plus élevé pour chaque département.
- La requête principale récupère les enregistrements complets des employés correspondant à ces salaires maximaux.
Méthode 3 : Utiliser les fonctions de fenêtre (MySQL 8.0+)
Dans MySQL 8.0 et versions ultérieures, vous pouvez utiliser les fonctions de fenêtre pour récupérer les enregistrements avec la valeur maximale de manière plus concise et efficace.
Exemple : Récupérer les employés avec le salaire le plus élevé par département
SELECT employee_id, name, salary, department_id
FROM (
SELECT *,
RANK() OVER (PARTITION BY department_id ORDER BY salary DESC) AS rnk
FROM employees
) ranked
WHERE rnk = 1;
Exemple de sortie :
| employee_id | name | salary | department_id |
|---|---|---|---|
| 101 | Tanaka | 120000 | 1 |
| 202 | Suzuki | 90000 | 2 |
Fonctionnement de cette requête :
- La fonction
RANK()classe les salaires au sein de chaque département par ordre décroissant. - La requête externe extrait les enregistrements dont le rang est 1 (enregistrements avec la valeur maximale).
Remarques importantes
- Si plusieurs enregistrements partagent la valeur maximale
- Si plusieurs enregistrements partagent la même valeur maximale, tous les enregistrements correspondants seront renvoyés par l’une ou l’autre méthode. Exemple :
SELECT * FROM employees WHERE salary = (SELECT MAX(salary) FROM employees);
Exemple de sortie :
| employee_id | name | salary | department_id |
|---|---|---|---|
| 101 | Tanaka | 120000 | 1 |
| 102 | Sato | 120000 | 1 |
- Optimisation des performances
- Utiliser des sous‑requêtes ou des JOINs sur de grands ensembles de données peut réduire les performances.
- Un indexage approprié peut améliorer considérablement la vitesse d’exécution des requêtes.
Exemples d’affaires pratiques
- Récupérer le produit avec le prix le plus élevé
SELECT * FROM products WHERE price = (SELECT MAX(price) FROM products);
- Récupérer les informations détaillées du coût maximal par projet
SELECT p.* FROM projects p JOIN ( SELECT project_id, MAX(cost) AS max_cost FROM project_costs GROUP BY project_id ) subquery ON p.project_id = subquery.project_id AND p.cost = subquery.max_cost;
6. Considérations importantes lors de l’utilisation de la fonction MAX
La fonction MAX de MySQL est une fonction d’agrégation très utile, mais il existe plusieurs points importants à garder à l’esprit lors de son utilisation. Comprendre les caractéristiques des données, les implications en termes de performances et la façon dont les valeurs NULL sont gérées aide à éviter des résultats incorrects et une dégradation des performances. Dans cette section, nous expliquons les considérations clés lors de l’utilisation de la fonction MAX.
Gestion des valeurs NULL
Dans MySQL, les valeurs NULL sont traitées comme des « valeurs inconnues ». Ainsi, lors de l’utilisation de la fonction MAX, les valeurs NULL sont ignorées.
Exemple : Récupérer la valeur maximale à partir de données incluant NULL
SELECT MAX(salary) FROM employees;
Données :
| employee_id | name | salary |
|---|---|---|
| 1 | Tanaka | 50000 |
| 2 | Sato | NULL |
| 3 | Suzuki | 60000 |
Résultat :
| MAX(salary) |
|---|
| 60000 |
Points clés :
- Même si la colonne
salarycontient des valeurs NULL, la fonction MAX les ignore lors du calcul. - Vous devez réfléchir attentivement à la façon dont les valeurs NULL affectent la logique de vos données.
Lorsqu’il existe plusieurs valeurs maximales
La fonction MAX renvoie une seule valeur maximale, mais plusieurs enregistrements peuvent partager cette même valeur maximale dans le jeu de données. Dans de tels cas, vous devez structurer la requête pour récupérer tous les enregistrements correspondants.
Exemple : Récupérer les employés avec le même salaire maximal
SELECT *
FROM employees
WHERE salary = (SELECT MAX(salary) FROM employees);
Données :
| employee_id | name | salary |
|---|---|---|
| 1 | Tanaka | 60000 |
| 2 | Sato | 60000 |
| 3 | Suzuki | 50000 |
Résultat :
| employee_id | name | salary |
|---|---|---|
| 1 | Tanaka | 60000 |
| 2 | Sato | 60000 |
Point clé :
- Si MAX seul n’est pas suffisant, utilisez une sous‑requête pour récupérer tous les enregistrements correspondants.
Impact sur les performances
La fonction MAX fonctionne efficacement dans les requêtes simples. Cependant, les performances peuvent se dégrader lorsqu’on travaille avec de grands ensembles de données ou des requêtes complexes.
Conseils pour améliorer les performances
- Utiliser des index Ajouter un index à la colonne utilisée dans la fonction MAX peut améliorer considérablement la vitesse de la requête.
CREATE INDEX idx_salary ON employees(salary);
- Filtrer les données inutiles Réduire le jeu de données en utilisant une clause WHERE pour limiter les lignes ciblées.
SELECT MAX(salary) FROM employees WHERE department_id = 1;
- Diviser et calculer Envisagez de calculer les valeurs maximales par sous‑ensembles, puis de déterminer la valeur maximale finale.
Autres considérations
- Impact des types de données Le comportement de la fonction MAX dépend du type de données de la colonne.
* Numérique : Comparaison numérique simple.
* Chaîne : Comparée dans l’ordre lexicographique.
* Date : Retourne la date la plus récente (la plus tardive). Exemple :SELECT MAX(last_name) FROM employees;
Dans ce cas, la valeur maximale est déterminée en fonction de l’ordre lexicographique des chaînes.
Données manquantes autres que NULL Si les données sont incomplètes ou mal formatées, le résultat du calcul peut ne pas correspondre aux attentes. Un nettoyage des données peut être nécessaire.
Combinaison avec d’autres fonctions d’agrégation Lorsqu’on combine MAX avec d’autres fonctions d’agrégation (telles que SUM ou AVG), assurez‑vous d’interpréter correctement les résultats.
7. FAQ : Questions fréquemment posées
Cette section résume et explique les questions courantes concernant la fonction MAX de MySQL. Elle couvre à la fois les sujets de base et avancés.
Q1 : La fonction MAX peut‑elle être utilisée sur plusieurs colonnes en même temps ?
R1 : Non, la fonction MAX agit sur une seule colonne. Si vous souhaitez récupérer les valeurs maximales de plusieurs colonnes, vous devez appliquer la fonction MAX à chaque colonne individuellement.
Exemple : Récupérer les valeurs maximales de plusieurs colonnes
SELECT MAX(salary) AS max_salary, MAX(bonus) AS max_bonus
FROM employees;
Q2 : Que se passe-t-il lorsque la fonction MAX est appliquée à une colonne de type chaîne ?
A2 : Lorsqu’elle est appliquée à une colonne de type chaîne, la fonction MAX renvoie la valeur qui est la dernière dans l’ordre lexicographique (dictionnaire).
Exemple : Récupérer la valeur maximale de chaîne
SELECT MAX(last_name) FROM employees;
Points clés :
- Dans l’ordre lexicographique, « Z » vient après « A », et les chiffres ainsi que les symboles sont également évalués.
- Si des caractères spéciaux sont inclus, le résultat peut ne pas correspondre à l’ordre attendu.
Q3 : Quelle est la différence entre la fonction MAX et la clause ORDER BY ?
A3 : Bien que la fonction MAX et la clause ORDER BY puissent sembler servir des objectifs similaires, elles se comportent différemment.
- Fonction MAX : Récupère directement la valeur maximale de la colonne spécifiée.
- Clause ORDER BY : Trie les données en fonction de la colonne spécifiée et vous permet de récupérer la première ou la dernière valeur selon les besoins.
Exemple : Récupérer la valeur maximale en utilisant ORDER BY
SELECT * FROM employees
ORDER BY salary DESC
LIMIT 1;
Points clés :
- La fonction MAX est souvent plus efficace en termes de performances.
- La clause ORDER BY est utile lorsque vous avez besoin d’informations supplémentaires avec l’enregistrement contenant la valeur maximale.
Q4 : La fonction MAX fonctionne-t-elle correctement lorsque des valeurs NULL sont incluses ?
A4 : Oui, la fonction MAX ignore les valeurs NULL. Par conséquent, les valeurs NULL n’affectent pas le calcul de la valeur maximale.
Exemple : Comportement lorsque des valeurs NULL sont incluses
SELECT MAX(salary) FROM employees;
Données :
| employee_id | name | salary |
|---|---|---|
| 1 | Tanaka | 60000 |
| 2 | Sato | NULL |
| 3 | Suzuki | 50000 |
Résultat :
| MAX(salary) |
|---|
| 60000 |
Note importante :
Si vous souhaitez inclure les valeurs NULL dans le traitement, utilisez la fonction IFNULL pour remplacer NULL par une valeur par défaut.
SELECT MAX(IFNULL(salary, 0)) FROM employees;
Q5 : Comment améliorer les performances lors de l’utilisation de la fonction MAX ?
A5 : Considérez les approches suivantes :
- Ajouter des index : Ajouter un index à la colonne utilisée dans la fonction MAX peut améliorer considérablement les performances de la requête.
CREATE INDEX idx_salary ON employees(salary);
- Filtrer les données cibles : Utilisez une clause WHERE pour réduire le nombre de lignes traitées.
SELECT MAX(salary) FROM employees WHERE department_id = 1;
- Optimiser les requêtes : Éliminez les calculs inutiles et gardez la structure de la requête simple.
Q6 : Que se passe-t-il lorsqu’on combine MAX avec la clause GROUP BY ?
A6 : En combinant GROUP BY avec la fonction MAX, vous pouvez récupérer la valeur maximale pour chaque groupe.
Exemple : Récupérer le salaire le plus élevé par département
SELECT department_id, MAX(salary)
FROM employees
GROUP BY department_id;
Résultat :
| department_id | MAX(salary) |
|---|---|
| 1 | 120000 |
| 2 | 90000 |
Q7 : Si plusieurs enregistrements partagent la valeur maximale, comment les récupérer tous ?
A7 : Utilisez une sous-requête ou un JOIN pour récupérer tous les enregistrements qui partagent la valeur maximale.
Exemple : Récupérer tous les enregistrements avec la valeur maximale
SELECT *
FROM employees
WHERE salary = (SELECT MAX(salary) FROM employees);
Q8 : La fonction MAX peut-elle être utilisée avec des fonctions de fenêtre ?
A8 : Oui, dans MySQL 8.0 et versions ultérieures, vous pouvez combiner MAX avec des fonctions de fenêtre pour des requêtes plus flexibles.
Exemple : Récupérer les employés avec le salaire le plus élevé par département
SELECT employee_id, name, salary, department_id
FROM (
SELECT *,
RANK() OVER (PARTITION BY department_id ORDER BY salary DESC) AS rnk
FROM employees
) ranked
WHERE rnk = 1;

8. Résumé
La fonction MAX de MySQL est un outil puissant pour les opérations de base de données et l’analyse de données. Dans cet article, nous avons couvert de manière exhaustive tout, depuis l’utilisation de base de la fonction MAX jusqu’aux requêtes conditionnelles, au regroupement, à la récupération d’enregistrements complets avec les valeurs maximales, et à l’optimisation des performances.
Principaux enseignements
- Utilisation de base de la fonction MAX La fonction MAX est utilisée pour récupérer la valeur maximale d’une colonne spécifiée. Elle prend en charge divers types de données, y compris les nombres, les chaînes et les dates.
- Récupération maximale conditionnelle En utilisant la clause
WHERE, vous pouvez récupérer les valeurs maximales qui correspondent à des conditions spécifiques. Cela est utile pour des analyses basées sur des projets ou des départements. - Récupération des valeurs maximales par groupe Nous avons expliqué comment utiliser la clause
GROUP BYpour récupérer les valeurs maximales pour chaque groupe, comme les salaires par département ou les ventes par mois. - Récupération d’enregistrements complets avec la valeur maximale Vous avez appris comment récupérer efficacement les enregistrements complets contenant les valeurs maximales en utilisant des sous‑requêtes, des JOINs et des fonctions de fenêtre.
- Considérations importantes lors de l’utilisation de MAX Il est important de prendre en compte la gestion des NULL, les valeurs maximales multiples et l’impact sur les performances.
- FAQ Nous avons abordé les questions courantes, y compris comment utiliser MAX avec plusieurs colonnes et des conseils pour l’optimisation des performances.
Réflexions finales
En utilisant correctement la fonction MAX, l’analyse de données et la génération de rapports deviennent beaucoup plus efficaces. Continuez à pratiquer SQL pour créer des requêtes plus avancées.
Nous espérons que cet article vous aidera à approfondir votre compréhension de la manipulation et de l’analyse des données avec MySQL.


