MIN, MAX et agrégation non numérique
Agréger des dates et des chaînes, et comprendre le sens de MIN appliqué à du texte
MIN, MAX et agrégation non numérique est une leçon SQL Interview Prep gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Interview Prep, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Interview Prep comprend 4 leçons au total.
MIN et MAX au-delà des nombres
Les candidats supposent que MIN et MAX ne fonctionnent qu’avec des nombres. Les recruteurs aiment demander : « Que renvoie MAX(nom) ? Et MIN(date_de_commande) ? »
La réalité est la suivante : MIN et MAX fonctionnent avec tout type ordonnable — nombres, dates et chaînes de caractères. Comprendre les règles de classement propres à chaque type est la véritable compétence évaluée ici.
Le cas numérique
Commençons par le cas connu. Sur des colonnes numériques, MIN renvoie la plus petite valeur et MAX la plus grande. C’est simple.
Comme les autres agrégats, MIN et MAX ignorent les NULL. Un NULL n’est jamais la valeur minimale ou maximale : il est simplement ignoré. Si toutes les valeurs sont NULL, les deux fonctions renvoient NULL.
SELECT MIN(salary) AS lowest, MAX(salary) AS highest
FROM employees;MIN et MAX sur les dates
Les dates et les horodatages sont entièrement ordonnables : MIN(order_date) donne la date la plus ancienne et MAX(order_date), la plus récente.
C'est ainsi que vous répondez à « quand la première commande a-t-elle été passée ? » (MIN) et à « quelle est l'activité la plus récente ? » (MAX), sans trier ni limiter les résultats. C'est la solution idiomatique fondée sur les ensembles.
SELECT
MIN(order_date) AS first_order,
MAX(order_date) AS latest_order
FROM orders;Intervalle de dates en une seule requête
Une question fréquente vient ensuite : « Depuis combien de temps ce client est-il actif ? » Combinez MIN et MAX, puis soustrayez l'une de l'autre.
Cela calcule l'intervalle entre la première et la dernière commande. La syntaxe exacte de la soustraction varie selon le dialecte, mais l'idée de MIN/MAX est universelle et montre que vous pouvez exprimer des intervalles de manière déclarative.
SELECT
customer_id,
MIN(order_date) AS first_order,
MAX(order_date) AS last_order,
MAX(order_date) - MIN(order_date) AS active_days
FROM orders
GROUP BY customer_id;MIN et MAX sur les chaînes
Voici ce qui surprend les gens. Sur les colonnes de texte, MIN et MAX utilisent un ordre lexicographique (alphabétique) fondé sur la collation de la colonne.
Ainsi, MIN(name) renvoie le nom qui vient en premier dans l'ordre alphabétique, et MAX(name), celui qui vient en dernier. MIN appliqué à {'Carol', 'Alice', 'Bob'} renvoie 'Alice' ; MAX renvoie 'Carol'.
SELECT MIN(name) AS first_alpha, MAX(name) AS last_alpha
FROM employees;
-- with Alice, Bob, Carol: 'Alice' and 'Carol'Collation et sensibilité à la casse
L'ordre des chaînes dépend de la collation, qui contrôle la sensibilité à la casse et les règles propres aux paramètres régionaux. Avec de nombreuses collations par défaut, les lettres majuscules peuvent être placées avant les minuscules ; ainsi, MAX de {'apple', 'Banana'} peut vous surprendre.
En entretien, précisez que les résultats de MIN/MAX sur les chaînes dépendent de la collation. Cette nuance distingue une réponse apprise par cœur d'une véritable compréhension.
Ce que MIN(texte) NE signifie PAS
Une confusion fréquente consiste à croire que MIN(name) renvoie la chaîne la plus courte ou que MAX(name) renvoie la plus longue. Ce n'est pas le cas. Tout dépend de l'ordre de tri, et non de la longueur.
Si vous avez réellement besoin de la chaîne la plus longue, triez selon LENGTH(name) et sélectionnez la première ligne, ou utilisez MAX(LENGTH(name)) pour obtenir uniquement la longueur. Ne confondez pas l'ordre des valeurs avec leur longueur.
SELECT MAX(LENGTH(name)) AS longest_name_length
FROM employees;MIN/MAX ne combinent pas les colonnes
Piège important : MIN et MAX s'appliquent chacune indépendamment à une seule colonne. Elles ne renvoient pas la ligne entière qui contient le minimum ou le maximum.
Si vous écrivez SELECT MIN(salary), name sans regroupement, vous n'obtenez pas le nom de la personne la moins bien rémunérée — vous obtenez une erreur ou un nom arbitraire selon le dialecte. Pour récupérer la ligne entière, utilisez ORDER BY + LIMIT ou une fonction de fenêtrage.
-- Wrong assumption: this does NOT give the lowest earner's name.
-- Correct approach to get the whole row:
SELECT name, salary
FROM employees
ORDER BY salary ASC
LIMIT 1;Récapitulatif du comportement de NULL pour MIN/MAX
Comme SUM et AVG, MIN et MAX ignorent les NULL. Un NULL n'est ni la plus petite ni la plus grande valeur.
- Valeurs mélangées et NULL : les NULL sont ignorés, et le MIN/MAX réel est renvoyé.
- Uniquement des NULL ou aucune ligne : MIN et MAX renvoient NULL.
Cette cohérence entre les fonctions d'agrégation est un point clair à mentionner : « Toutes les fonctions d'agrégation standard ignorent les NULL. »
Utiliser MIN et MAX dans un groupe
MIN et MAX sont particulièrement utiles avec GROUP BY pour obtenir les valeurs extrêmes de chaque groupe. « Salaire le plus élevé par service » en est un exemple classique.
Cette requête renvoie une ligne par service avec le salaire le plus élevé de ce service. Souvenez-vous qu'elle donne la valeur, pas l'employé. Associer le nom à cette valeur est un problème distinct, et fréquent.
SELECT department, MAX(salary) AS top_salary
FROM employees
GROUP BY department;Répondre avec assurance
Une bonne réponse d'entretien serait : « MIN et MAX fonctionnent avec tout type pouvant être trié. Pour les nombres, ils donnent le plus petit et le plus grand ; pour les dates, la plus ancienne et la plus récente ; pour les chaînes, l'ordre alphabétique selon la collation de la colonne. Ils ignorent les NULL et ne renvoient NULL que lorsqu'aucune valeur non NULL n'existe. Ils renvoient une seule valeur, et non la ligne entière ; pour récupérer la ligne, j'utiliserais ORDER BY avec LIMIT ou une fonction de fenêtrage. »
Vérification rapide
Réfléchissez à l'agrégation de chaînes.
Récapitulatif
Tout ce qu'il faut savoir sur MIN et MAX :
- Ils fonctionnent avec tout type pouvant être trié : nombres, dates et chaînes.
- Les chaînes utilisent l'ordre alphabétique fondé sur la collation, et non la longueur.
- Dates : MIN = la plus ancienne, MAX = la plus récente.
- Ils ignorent les NULL ; si toutes les valeurs sont NULL ou s'il n'y a aucune ligne, NULL est renvoyé.
- Ils renvoient une valeur, pas la ligne entière — utilisez ORDER BY + LIMIT pour cela.
Ensuite : que se passe-t-il lorsque vous utilisez des fonctions d'agrégation sans GROUP BY ?
Questions Fréquemment Posées
La leçon « MIN, MAX et agrégation non numérique » est-elle gratuite ?
Oui — le texte complet de « MIN, MAX et agrégation non numérique » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Interview Prep, passe à CoddyKit PRO. Le cours SQL Interview Prep comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « MIN, MAX et agrégation non numérique » ?
Agréger des dates et des chaînes, et comprendre le sens de MIN appliqué à du texte Tu pratiques SQL Interview Prep avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer SQL Interview Prep ?
Aucune expérience préalable n'est requise. SQL Interview Prep sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « MIN, MAX et agrégation non numérique » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon SQL Interview Prep ?
Oui. Chaque leçon SQL Interview Prep inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- COUNT(*) ou COUNT(colonne) ou COUNT(DISTINCT)
- SUM et AVG avec des NULL
- MIN, MAX et agrégation non numérique
- Agrégats sans GROUP BY