Introduction

Dans cet article, nous allons apprendre à utiliser la fonction aggregate Max dans nos commandes SQL Postgres sous plusieurs angles, pour acquérir un niveau de compréhension plus profond. Ici, nous allons discuter:

  • Quoi ? Du point de vue des débutants, que fait la fonction MAX?
  • Pourquoi? Dans quelles situations devrions-nous utiliser la fonction Max() ?
  • Comment? Comment utilisons-nous cette fonction dans notre SQL ?
  • Plus Nous utiliserons également le GROUPE PAR construction.

Prérequis

  • Compréhension de niveau débutant de l’écriture SQL pour PostgreSQL (ou Oracle, MySQL, MS SQL Server, etc.) en utilisant l’outil d’administration PG ou un autre outil d’administration de base de données, ou en utilisant des langages de code ou de script/ codage tels que PHP, Python, Javascript, Java, C#, ASP.Net , VB.Net , Ruby, Node.js, etc.) qui fournissent une connexion à la base de données, ainsi qu’une méthode pour envoyer les requêtes SQL de la base de données, pour obtenir des données ou apporter des modifications à votre base de données.
  • Compréhension de l’utilisation de certaines instructions SQL de base (PL/SQL), telles que SELECT, FROM et GROUP BY.
  • Connaissance de ce que sont une chaîne et une fonction.

Quelle est la fonction MAX() et comment fonctionne-t-elle?

La fonction Postgres MAX() renvoie la valeur la plus élevée (maximale) d’un ensemble de nombres.

Syntaxe

1
i_highest_of_set: = MAX(set_of_numbers);

Pourquoi et quand utilisons-nous la fonction MAX() ?

Chaque fois que vous avez un ensemble de nombres où vous voulez savoir lequel de cet ensemble est le plus élevé dans l’ensemble.

Commençons par un exemple facile

Nous allons commencer par un exemple facile à comprendre. Notre jeu de données initial est une table appelée coding_languages.

id_tech t_name i_rapid_dev
0 Python 7
1 Java 5
2 PHP 9
3 Javascript 8

Chez notre société de développement de logiciels, le tableau ci-dessus appelé coding_languages comporte trois champs, notamment:

  • id_tech est notre identifiant unique.
  • t_name est le nom du langage de codage.
  • i_rapid_dev est une évaluation entière de la rapidité avec laquelle un codeur moyen peut se développer en utilisant le langage.

L’objectif est de savoir quelle langue a la meilleure note en termes de développement rapide (i_rapid_dev). Écrivons notre script SQL pour utiliser la fonction MAX pour récupérer la t_name qui a la valeur la plus élevée dans la colonne i_rapid_dev de notre jeu d’enregistrements de base de données PostgreSQL:

1
2
3
4
5
6
7
8
SÉLECTIONNEZ
id_tech
, t_name
, MAX(i_rapid_dev)
DE
coding_languages
GROUPER PAR
i_rapid_dev;

Remarque pour l’exemple SQL ci-dessus: C’est là que nous utilisons nos connaissances des groupes SQL. Vous pouvez y penser de cette façon: Si vous voulez trouver le maximum de plus d’un nombre, vous devez considérer un ensemble de nombres.

Comment fonctionne l’instruction SQL ci-dessus? Nous allons le faire étape par étape:

  • (1) SELECT: Nous disons au moteur SQL de PostgreSQL que nous voulons un maximum de toutes les valeurs (car aucune clause WHERE ou HAVING) dans la colonne i_rapid_dev.
  • (2) FROM: Spécifier la table coding_languages à partir de laquelle récupérer nos données.
  • (3) GROUP BY: Dire à Postgres que nous voulons regrouper les données. La fonction MAX(), étant une fonction d’agrégation, nécessite le regroupement de nos données.

La requête ci-dessus renvoie : /id_tech/t_name|i_rapid_dev ||:—:|—|————:|| 2| PHP/9/

Nous savons maintenant que PHP est le plus rapide en termes de développement rapide.

Un autre exemple d’utilisation de la fonction SQL « Max » dans PostgreSQL

Le projet mini: Nous avons demandé aux employés de noter les technologies utilisées dans notre entreprise et de connaître la technologie la plus graduée. Ici, nous allons explorer une autre utilisation relativement simple de MAX() tout en introduisant le mot clé « AVOIR ». Voici notre jeu de données « raw » avec le nom de table de « technologies »:

id_tech t_name_user t_name_tech t_category_tech i_grade
0 Ted Java Lang 4
1 Bif Mongo NoSQL 16
2 Susan MySQL RDB 8
3 Tim PostgreSQL RDB 16
4 Gary Python Lang 20
5 Sammy PHP Lang 12

Planifions comment procéder. Nous voulons créer une requête qui fera plus d’une chose, notamment:

  • (1) Considérez uniquement les lignes de notre ensemble de données où la valeur du champ _t_categorytech (colonne) est égale à « Lang ». C’est là que la clause HAVING est utile. Il donnera 3 lignes. Tu vois pourquoi ? Astuce: Regardez dans le tableau ci-dessus pour la valeur « Lang ». Remarquez qu’il y en a trois? Dans quelle colonne sont-ils ?
  • (2) Renvoie la valeur dans le champ _t_nametech pour ces 3 lignes car nous voulons savoir avec quelles technologies les notes vont.
  • (3) Peu nous importe qui a fait l’évaluation, donc aucune mention de la colonne _t_nameuser.
  • (4) Obtenez un MAXIMUM de la SOMME des valeurs de ces 3 lignes en utilisant la colonne _igrade.
  • (5) Utilisez GROUP BY pour regrouper les colonnes appropriées.

Analyse du SQL ci-dessus:

  • (1) SELECT: Nous filtrons notre table Postgres pour: (a) Afficher la colonne t_name_tech, (b) calculer la somme des notes (Sum(i_grade)) pour chaque technologie donnée, et (c) Afficher le maximum de ces sommes (Max(i_sum_of_grades)) et nommer le résultat comme i_highest_grade.
  • (2) FROM: Spécifier la table coding_languages comme source de nos données.
  • (3) GROUP BY: Notifier PostgreSQL que nous regroupons. La fonction MAX nécessite pour nous de regrouper les données que Postgres résume en interne et de trouver les plus élevées.
  • (4) HAVING: C’est là que nous demandons à PostgreSQL de filtrer dans les lignes qui ont « Lang » dans le champ t_category_tech.

La requête ci-dessus renvoie:

t_name_tech t_catégorie_tech i_grade
PHP Lang 12

Notes

  • Pourquoi avons-nous nommé certaines de nos variables et colonnes de table avec un préfixe de « i » ou « t »? Nous utilisons « i » pour signifier un entier et « t » pour signifier un texte ou une chaîne.
  • Nous vous invitons à rechercher nos autres articles qui utilisent la puissante clause GROUP BY Postgres.

Conclusion

Nous avons appris ici quand et comment il est préférable d’utiliser la fonction MAX() dans PostgreSQL Tm pour trouver le nombre le plus élevé dans un ensemble de nombres. Nous avons utilisé des exemples de niveau débutant et plus difficiles, en augmentant la difficulté, afin de rendre le processus d’apprentissage aussi facile que possible car SQL peut parfois être difficile à comprendre, en particulier lorsque vous utilisez les clauses GROUP BY et HAVING pour travailler avec des sous-ensembles de données.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.