Introducción
En este artículo, aprenderemos a usar la función aggregate Max en nuestros comandos SQL Postgres desde múltiples perspectivas, para obtener un nivel de comprensión más profundo. Aquí discutiremos:
- ¿Qué? Desde una perspectiva de principiante, ¿qué hace la función MAX?
- ¿Por qué? ¿En qué situaciones deberíamos usar la función Max ()?
- ¿Cómo? ¿Cómo usamos esta función en nuestro SQL?
- Más También haremos algún uso del GRUPO POR construcción.
Requisitos previos
- Comprensión de nivel principiante de escribir SQL para PostgreSQL(o Oracle, MySQL, MS SQL Server, etc.) utilizando la herramienta de administración PG o alguna otra herramienta de administración de bases de datos, o mediante código o lenguajes de programación como PHP, Python, Javascript, Java, C#, ASP.Net, VB.Net, Ruby, Nodo.js, etc.) que proporcionan una conexión a la base de datos, así como un método para enviar las consultas SQL de la base de datos, para obtener datos o realizar cambios en la base de datos.
- Comprensión del uso de algunas instrucciones SQL básicas (PL/SQL), como
SELECT
,FROM
yGROUP BY
. - Conocimiento de lo que son una cadena y una función.
¿Qué es la función MAX () y cómo funciona?
La función Postgres MAX()
devuelve el valor más alto (máximo) de un conjunto de números.
Sintaxis
1
|
i_highest_of_set := MAX(set_of_numbers);
|
por Qué y cuando hacemos uso de la función MAX ()?
Cada vez que tenga un conjunto de números en el que desee saber cuál de ese conjunto es el más alto del conjunto.
Comencemos con un ejemplo sencillo
Comenzaremos con un ejemplo fácil de entender. Nuestro conjunto de datos inicial es una tabla llamada coding_languages.
id_tech | t_name | i_rapid_dev |
---|---|---|
0 | Python | 7 |
1 | Java | 5 |
2 | PHP | 9 |
3 | Javascript | 8 |
En nuestra empresa de desarrollo de software, la tabla anterior llamado coding_languages
tiene tres campos, incluyendo:
-
id_tech
es nuestro identificador único. -
t_name
es el nombre del lenguaje de codificación. -
i_rapid_dev
es una evaluación de enteros de la rapidez con la que un codificador promedio puede desarrollarse utilizando el lenguaje.
El objetivo es averiguar qué idioma tiene la calificación más alta en términos de desarrollo rápido (i_rapid_dev
). Escribamos nuestro script SQL para usar la función MAX
para recuperar el t_name
que tiene el valor más alto en la columna i_rapid_dev
en nuestro conjunto de registros de base de datos PostgreSQL:
1
2 3 4 5 6 7 8 |
SELECCIONE
id_tech , t_name , MAX(i_rapid_dev) DE coding_languages GRUPO i_rapid_dev; |
Nota para el SQL ejemplo de arriba: Esto es donde utilizamos nuestros conocimientos de SQL Grupos. Puede pensarlo de esta manera: Si desea encontrar el máximo de más de un número, debe considerar un conjunto de números.
¿Cómo funciona la instrucción SQL anterior? Lo haremos paso a paso:
- (1)
SELECT
: Le estamos diciendo al motor SQL de PostgreSQL que queremos un máximo de todos los valores (porque no hay cláusula WHERE o HAVING) en la columnai_rapid_dev
. - (2)
FROM
: Especificar la tablacoding_languages
de la que recuperar nuestros datos. - (3)
GROUP BY
: Decirle a Postgres que queremos agrupar los datos. La función MAX (), al ser una función agregada, requiere agrupar nuestros datos.
La consulta anterior devuelve:| id_tech | t_name | i_rapid_dev||:—:|—|————:|| 2 | PHP | 9 |
ahora sabemos que PHP es el más rápido en términos de desarrollo rápido.
Otro ejemplo de uso de la función SQL » Max » en PostgreSQL
El mini proyecto: Hicimos que los empleados calificaran las tecnologías utilizadas en nuestra empresa y quisieran conocer la tecnología de mayor calificación. Aquí exploraremos otro uso relativamente simple de MAX()
al introducir la palabra clave «TENER». Aquí está nuestro conjunto de datos» sin procesar «con el nombre de tabla de»tecnologías»:
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 |
Vamos a planear cómo proceder. Queremos crear una consulta que haga más de una cosa, incluyendo:
- (1) Solo considere las filas de nuestro conjunto de datos donde el valor del campo (columna) _t_categorytech es igual a «Lang». Aquí es donde la cláusula de POSESIÓN es útil. Dará 3 filas. ¿Puedes ver por qué? Sugerencia: Busque en la tabla de arriba el valor «Lang». Note que hay tres? ¿En qué columna están?
- (2) Devuelve el valor en el campo _t_nametech para esas 3 filas porque queremos saber con qué tecnologías van las calificaciones.
- (3) No nos importa quién hizo la evaluación, por lo que no se menciona la columna _t_nameuser.
- (4) Obtenga un MÁXIMO de SUMA de los valores de esas 3 filas utilizando la columna _igrade.
- (5) Use AGRUPAR POR para agrupar las columnas apropiadas.
Análisis del SQL anterior:
- (1)
SELECT
: Estamos filtrando nuestra tabla Postgres para: (a) Mostrar la columnat_name_tech
, (b) calcular la suma de grados (Sum(i_grade)
) para cada tecnología dada, y (c) Mostrar el máximo de esas sumas (Max(i_sum_of_grades)
) y nombrar el resultado comoi_highest_grade
. - (2)
FROM
: Especificando la tablacoding_languages
como fuente de nuestros datos. - (3)
GROUP BY
: Notificando a PostgreSQL que estamos agrupando. La funciónMAX
requiere que agrupemos los datos que Postgres está resumiendo internamente y encuentre el más alto. - (4)
HAVING
: Aquí es donde le indicamos a PostgreSQL que filtre en las filas que tienen «Lang» en el campot_category_tech
.
La consulta anterior devuelve:
t_name_tech | t_category_tech | i_grade |
---|---|---|
PHP | Lang | 12 |
Notas
- ¿Por qué nombramos algunas de nuestras variables y columnas de tabla con un prefijo de «i» o «t»? Usamos » i «para significar entero y» t » para significar texto o cadena.
- Le invitamos a buscar nuestros otros artículos que utilizan la poderosa cláusula
GROUP BY
Postgres.
Conclusión
Aquí aprendimos cuándo y cómo es mejor usar la función MAX()
en PostgreSQL para encontrar el número de mayor valor en un conjunto de números. Utilizamos ejemplos de nivel principiante y más difíciles, aumentando la dificultad, para hacer que el proceso de aprendizaje sea lo más fácil posible, ya que SQL a veces puede ser difícil de comprender, especialmente cuando se utilizan las cláusulas GROUP BY
y HAVING
para trabajar con subconjuntos de datos.