CodeGym /Cours /SQL SELF /Valeurs Minimales et Maximales : MIN() et ...

Valeurs Minimales et Maximales : MIN() et MAX()

SQL SELF
Niveau 7 , Leçon 4
Disponible

Plongeons dans le monde des extrêmes dans les données — la recherche des valeurs minimales et maximales. T’inquiète, SQL ne va pas te forcer à apprendre un truc fondamentalement nouveau, mais tu vas voir comment choper les plus grandes et les plus petites valeurs dans une table. Ces fonctions sont partout : de l’analyse des notes de films sur IMDb au calcul de la température minimale sur Mars.

MIN() et MAX() sont des fonctions d’agrégation qui renvoient la valeur minimale et maximale d’un ensemble de données. Elles bossent comme des chasseurs sympas d’extrêmes : MIN() cherche l’élément le plus petit, MAX() au contraire, le plus grand. Et ce n’est pas que pour les nombres : tu peux aussi chercher la chaîne ou la date la plus petite ou la plus grande.

-- Forme générale des fonctions MIN et MAX
SELECT 
    MIN(column_name) AS min_value,
    MAX(column_name) AS max_value
FROM table_name;

Facile et rapide ! Maintenant, voyons comment cette magie marche dans différents scénarios.

Syntaxe et exemples de base

Données numériques

Imaginons qu’on a une table employees avec une colonne pour les salaires (salary).

On veut savoir le salaire minimal et maximal.

Table employees

id name salary
1 Anna Song 45000
2 Otto Art 30000
3 Maria Chi 120000
4 Alex Lin 90000
5 Eva Tan 60000
-- Exemple pour les données numériques
SELECT 
    MIN(salary) AS min_salary,
    MAX(salary) AS max_salary
FROM employees;

Résultat

min_salary max_salary
30000 120000

Données textuelles

Tu peux utiliser MIN() et MAX() avec des données textuelles.

Elles sont comparées par ordre alphabétique (ouais, même les lettres peuvent être "les plus petites" ou "les plus grandes").

Imaginons une table students où la colonne name contient les prénoms des étudiants.

Table students

id name
1 Anna
2 Otto
3 Maria
4 Ben
5 Zoe
-- Exemple pour les données textuelles
SELECT 
    MIN(name) AS first_name_in_order,
    MAX(name) AS last_name_in_order
FROM students;

Résultat

first_name_in_order last_name_in_order
Anna Zoe

Dates et heures
On cherche la date la plus ancienne et la plus récente dans la table events.

Table events

id event_name event_date
1 New Year Party 2023-01-01
2 Summer Fest 2023-06-15
3 Halloween Bash 2023-10-31
4 Year End Gala 2023-12-31
-- Exemple pour les dates
SELECT 
    MIN(event_date) AS earliest_date,
    MAX(event_date) AS latest_date
FROM events;

Résultat

earliest_date latest_date
2023-01-01 2023-12-31

Utilisation de MIN() et MAX() dans les tables avec des valeurs NULL

Si une colonne contient des valeurs NULL, tu peux dormir tranquille : SQL les ignore dans les calculs.

Ça veut dire que MIN() et MAX() ne bossent qu’avec les valeurs "normales".

Table employees_with_null

id name salary
1 Otto 30000
2 Maria NULL
3 Anna 120000
4 John NULL
-- Table avec des NULL
SELECT 
    MIN(salary) AS min_salary,
    MAX(salary) AS max_salary
FROM employees_with_null;

Si la colonne salary contient des NULL, ils sont juste ignorés.

min_salary max_salary
30000 120000

Mais si TOUTE la colonne est remplie de NULL, le résultat sera NULL.

Exemples d’utilisation de MIN() et MAX() dans des cas réels

Déterminer l’employé le plus âgé et le plus jeune

Table employees

id name birth_date
1 Otto 1980-05-10
2 Maria 1990-11-20
3 Anna 1975-03-15
4 John 2000-08-01

Dans la table employees il y a un champ birth_date qui stocke les dates de naissance des employés. On va trouver le plus âgé et le plus jeune.

SELECT
    MIN(birth_date) AS oldest_employee,
    MAX(birth_date) AS youngest_employee
FROM employees;

Résultat :

oldest_employee youngest_employee
1975-03-15 2000-08-01

Analyse des ventes

id amount
1 150.00
2 75.50
3 200.00
4 120.00
5 500.00
6 90.00

Dans la table sales il y a un champ amount qui stocke les montants des ventes. On va trouver la plus petite et la plus grande vente.

SELECT
    MIN(amount) AS smallest_sale,
    MAX(amount) AS largest_sale
FROM sales;

Résultat de la requête

smallest_sale largest_sale
75.50 500.00

Trouver la toute première et la toute dernière commande

Si tu as une table orders avec un champ order_date, tu peux facilement trouver la première et la dernière date de commande.

Table d’origine orders

order_id customer_id order_date amount
101 1 2023-01-15 10:23:00 250.00
102 2 2023-02-10 14:45:00 150.00
103 3 2023-01-05 09:10:00 300.00
104 1 2023-03-22 16:30:00 500.00
105 4 2023-01-25 11:00:00 120.00
SELECT
    MIN(order_date) AS first_order,
    MAX(order_date) AS last_order
FROM orders;

Résultat de la requête :

first_order last_order
2023-01-05 09:10:00 2023-03-22 16:30:00

Particularités de MIN() et MAX()

Comparaison de textes : quand tu bosses avec des chaînes, MIN() et MAX() les comparent par ordre alphabétique.

Gestion des NULL : NULL est ignoré s’il y a d’autres valeurs dans la colonne. Mais si tout est NULL, le résultat sera NULL.

Comparaison de dates : SQL prend en compte non seulement l’année, mais aussi le mois, le jour, l’heure, les minutes.

1
Étude/Quiz
Agrégation des données, niveau 7, leçon 4
Indisponible
Agrégation des données
Agrégation des données
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION