Retour à la liste des articles Articles
7 minutes de lecture

La fonction SQL MIN()

SQL dispose d'une variété d'outils d'agrégation puissants, y compris la fonctionSQL MIN(). Cet article est un guide de référence rapide sur l'extraction et l'utilisation des valeurs minimales dans vos requêtes.

Dans l'environnement économique actuel, il est essentiel de pouvoir analyser efficacement les données de votre organisation afin de prendre des décisions éclairées. Les fonctions d'agrégation de SQL vous permettent d'effectuer toutes sortes d'analyses statistiques sur vos données.

Cet article est un guide de référence sur la fonction SQL MIN(), qui extrait le plus petit élément d'une colonne de données.

Si vous ne connaissez pas SQL, vous serez peut-être intéressé par notre cours interactif SQL pour les débutants. En partant du niveau débutant, vous maîtriserez les fonctions les plus utiles de SQL. Vous apprendrez les concepts des bases de données relationnelles, comment extraire des données et comment les analyser à l'aide de regroupements et d'agrégats.

Vous vous connecterez à une base de données via votre navigateur pour mettre en pratique vos nouvelles compétences grâce à 129 exercices interactifs. Le cours dure environ 10 heures.

Revenons maintenant à la fonction MIN(). Nous commencerons par examiner l'ensemble de données.

Exemple de données

Tous les exemples de cet article utilisent les données ci-dessous, qui sont un sous-ensemble de la base de données d'employés de MySQL. Les données sont contenues dans une table nommée employee_data.

emp_nobirth_datefirst_namelast_namesalarydept_nameterm_date
100021984-06-02BezalelSimmel72527Sales2022-05-31
100041974-05-01ChirstianKoblick74057Production
100061973-04-20AnnekePreusig60098Development
100081978-02-19SaniyaKalloufi52668Development
100121980-10-04PatricioBridgland54794Development
100141976-02-12BerniGenin60598Development
100161981-05-02KazuhitoCappelletti77935Sales2020-12-31

Exemples simples de la fonction SQL MIN()

Exemple 1 : Fonction MIN() simple

La fonction MIN() extrait la valeur minimale d'une colonne. Dans sa forme la plus simple, vous pouvez utiliser la requête ci-dessous pour répondre à la question suivante : Combien l'employé le moins bien payé gagne-t-il par an ?

SELECT 
  MIN(salary) 
FROM employee_data;

Vous obtiendrez les résultats suivants :

min(salary)
52668

Notez que la fonction MIN(), comme tous les autres agrégats SQL, est toujours suivie d'un nom de colonne entre parenthèses. Dans cet exemple, SQL effectue une recherche dans l'ensemble de la table et extrait la valeur la plus basse pour la colonne nommée.

Exemple 2 : Utilisation de MIN() avec d'autres fonctions agrégées

Vous pouvez, bien entendu, inclure d'autres fonctions d'agrégation dans vos résultats, comme dans l'exemple suivant :

SELECT 
  MIN(salary), 
  MAX(salary), 
  AVG(salary) 
FROM employee_data;

Vos résultats ressembleraient à ceci :

min(salary)max(salary)avg(salary)
526687793564668.143

Pour plus d'exemples, lisez Les fonctions SQL MIN() et MAX() expliquées en 6 exemples.

Exemple 3 : Utilisation de MIN() avec une expression arithmétique

Vous pouvez également utiliser des expressions arithmétiques avec la fonction MIN(). Si vous souhaitez connaître le salaire mensuel minimum plutôt que le salaire annuel minimum, votre requête sera la suivante :

SELECT MIN(salary/12) AS min_monthly_salary
FROM employee_data;

Le résultat de cette requête est: :

min_monthly_salary
4389

Exemples non standard d'utilisation de la fonction MIN()

Exemple 4 : Utilisation de MIN() pour des colonnes de type date/heure

La fonction MIN() fonctionne tout aussi bien avec des données non numériques.

Elle peut être utilisée avec les types de données date et datetime pour extraire la date ou l'heure la plus proche. Si vous souhaitez trouver la date de naissance du plus jeune employé de l'entreprise, votre requête sera la suivante :

SELECT MIN(birth_date) 
FROM employee_data;

Vous obtiendrez les résultats suivants :

min(birth_date)
20/4/1973

Exemple 5 : Utilisation de la fonction SQL MIN() pour les colonnes de texte

Pour les types de données de type chaîne de caractères comme CHAR, VARCHAR et TEXT, la fonction SQL MIN() extrait la première valeur dans l'ordre alphabétique de la colonne.

Si vous voulez trouver le premier nom de département par ordre alphabétique dans la table employee_data la requête serait la suivante :

SELECT MIN(dept_name) 
FROM employee_data

Voici les résultats :

min(dept_name)
Development

Vous remarquerez que même si plusieurs employés appartiennent au département Développement, le nom du département n'apparaît qu'une seule fois dans les résultats.

Utilisation de la fonction SQL MIN() avec GROUP BY

La fonction MIN(), comme toutes les fonctions d'agrégation SQL, peut être utilisée avec la clause GROUP BY. Cette clause indique à SQL de regrouper les lignes similaires et de produire une seule ligne pour chaque groupe. Par exemple, si vous avez regroupé les données de l'échantillon par département, votre ensemble de résultats contiendra une ligne pour chaque département.

Si vous n'êtes pas encore familiarisé avec la clause GROUP BY et son utilisation, les 5 exemples de GROUP BY peuvent vous aider.

Lorsque vous utilisez la fonction MIN() avec la clause GROUP BY, vous voyez la valeur minimale dans chaque groupe. Par exemple, si vous souhaitez connaître le salaire le plus bas dans chaque département, votre requête se présentera comme suit :

SELECT 
  dept_name, 
  MIN(salary) 
FROM employee_data 
GROUP BY dept_name;

Les résultats de la requête ressembleraient à ceci :

dept_nameMIN(salary)
Sales72527
Production74057
Development52668

Vous pouvez également utiliser la clause ORDER BY. Si vous voulez que les résultats soient classés par ordre de salaire minimum, votre requête sera la suivante: :

SELECT 
  dept_name, 
  MIN(salary) 
FROM employee_data 
GROUP BY dept_name
ORDER BY MIN(salary);

L'ensemble des résultats apparaît alors dans l'ordre du salaire minimum, du plus bas au plus élevé :

dept_nameMIN(salary)
Development52668
Sales72527
Production74057

Si vous pensez avoir besoin de vous entraîner à grouper des données en SQL, vous trouverez des exercices utiles dans 10 GROUP BY La pratique du SQL Exercices avec solutions.

Utilisation de la fonction MIN() dans HAVING

Vous pouvez utiliser les fonctions d'agrégation pour filtrer l'ensemble des résultats. Normalement, les critères de sélection sont définis à l'aide d'une clause WHERE, mais vous ne pouvez pas utiliser WHERE pour filtrer par un agrégat. Vous devez utiliser la clause HAVING à la place.

Pour trouver tous les départements où le salaire annuel minimum est supérieur à 60 000, votre requête serait la suivante :

SELECT dept_name, MIN(salary) 
FROM employee_data 
GROUP BY dept_name
HAVING MIN(salary) > 60000
ORDER BY MIN(salary);

Remarquez que la clause HAVING doit être utilisée avec la clause GROUP BY et qu'elle est placée après la clause GROUP BY mais avant la clause ORDER BY.

Les résultats sont les suivants :

dept_nameMIN(salary)
Sales72527
Production74057

Les valeurs nulles affectent-elles la fonction MIN() ?

La fonction SQL MIN() ignore les lignes qui ont une valeur nulle lorsqu'elle calcule le minimum. La valeur renvoyée est donc la plus petite valeur non nulle dans la colonne spécifiée.

Dans l'exemple de données, seules deux lignes ont des valeurs dans la date de fin. Dans toutes les autres lignes, cette colonne a la valeur NULL. Si vous recherchez la date de fin minimale, vous devriez obtenir la valeur non nulle la plus basse. Essayons :

SELECT 
  MIN(term_date) 
FROM employee_data;

Cette fonction renvoie la date la plus basse, en ignorant les valeurs nulles :

MIN(term_date)
31/12/2020

La seule fois où la fonction MIN() renverrait une valeur NULL serait si toutes les valeurs de la colonne étaient NULL.

Poursuivre avec la fonction MIN() de SQL

Nous avons exploré les utilisations de MIN(), mais votre apprentissage ne fait que commencer ; il y a encore beaucoup à découvrir ! Pour un guide rapide sur l'utilisation de la fonction SQL MIN(), consultez ces deux livres de recettes :

Rien de tel que la résolution de problèmes pratiques pour bien apprendre un sujet. Notre piste La pratique du SQL vous propose une série de défis similaires à ceux que vous rencontrerez dans le monde réel, avec une aide toujours disponible si vous êtes bloqué.

Enfin, LearnSQL.fr propose une vaste gamme de cours conçus pour vous aider à chaque étape de votre parcours d'apprentissage. Si vous voulez vraiment devenir un expert en SQL, je vous recommande notre parcours d'apprentissage Le SQL de A à Z. Ce parcours consiste en 7 cours interactifs qui vous aideront à vous familiariser avec le langage SQL. Ce parcours se compose de 7 cours interactifs qui vous emmènent du débutant aux fonctions avancées.

Passez à l'étape suivante et boostez votre carrière en devenant un expert SQL !