Funciones agregadas en MySQL

Las funciones agregadas tienen que ver

  • Realizar cálculos en varias filas
  • De una sola columna de una tabla
  • Y devolviendo un valor único.

La norma ISO define cinco (5) funciones agregadas, a saber;

1) CUENTA
2) SUMA
3) AVG
4) MÍN.
5) MÁX.

Por qué utilizar funciones agregadas

Desde una perspectiva empresarial, los distintos niveles de la organización tienen diferentes requisitos de información. Los directivos de alto nivel suelen estar interesados ​​en conocer las cifras completas y no necesariamente los detalles individuales.

Las funciones agregadas nos permiten producir fácilmente datos resumidos de nuestra base de datos.

Por ejemplo, desde nuestra base de datos myflix, la administración puede requerir los siguientes informes

  • Películas menos alquiladas.
  • Películas más alquiladas.
  • Número medio que se alquila cada película en un mes.

Producimos fácilmente los informes anteriores utilizando funciones agregadas.

Analicemos las funciones agregadas en detalle.

Función COUNT

La función CONTAR devuelve el número total de valores en el campo especificado. Funciona tanto con tipos de datos numéricos como no numéricos. Todas las funciones agregadas excluyen de forma predeterminada los valores nulos antes de trabajar con los datos.

COUNT (*) es una implementación especial de la función COUNT que devuelve el recuento de todas las filas de una tabla especificada. COUNT (*) también considera Nulos y duplicados.

La tabla que se muestra a continuación muestra datos en la tabla de alquiler de películas.

número de referencia Fecha de Transacción Fecha de regreso número de socio id_película película_ devuelta
11 20-06-2012 NULL 1 1 0
12 22-06-2012 25-06-2012 1 2 0
13 22-06-2012 25-06-2012 3 2 0
14 21-06-2012 24-06-2012 2 2 0
15 23-06-2012 NULL 3 3 0

Supongamos que queremos obtener el número de veces que se ha alquilado la película con id 2.

SELECT COUNT(`movie_id`)  FROM `movierentals` WHERE `movie_id` = 2;

Ejecutando la consulta anterior en MySQL banco de trabajo contra myflixdb nos da los siguientes resultados.

COUNT('movie_id')
3

Palabra clave DISTINTA

Palabra clave DISTINTA

La palabra clave DISTINCT que nos permite omitir duplicados de nuestros resultados. Esto se logra agrupando valores similares.

Para apreciar el concepto de Distinto, ejecutemos una consulta simple.

SELECT `movie_id` FROM `movierentals`;

movie_id
1
2
2
2
3

Ahora ejecutemos la misma consulta con la palabra clave distinta:

SELECT DISTINCT `movie_id` FROM `movierentals`;

Como se muestra a continuación, Distinto omite registros duplicados de los resultados.

movie_id
1
2
3

Función MIN

La función MÍN. devuelve el valor más pequeño en el campo de la tabla especificada.

Como ejemplo, supongamos que queremos saber el año en que se estrenó la película más antigua de nuestra biblioteca, podemos usar MySQLFunción MIN para obtener la información deseada.

La siguiente consulta nos ayuda a lograrlo

SELECT MIN(`year_released`) FROM `movies`;

Ejecutando la consulta anterior en MySQL El banco de trabajo contra myflixdb nos da los siguientes resultados.

MIN('year_released')
2005

Función MAX

Tal como sugiere el nombre, la función MAX es lo opuesto a la función MIN. Él devuelve el valor más grande del campo de tabla especificado.

Supongamos que queremos obtener el año en que se estrenó la última película de nuestra base de datos. Podemos usar fácilmente la función MAX para lograrlo.

El siguiente ejemplo devuelve el año del último estreno de la película.

SELECT MAX(`year_released`)  FROM `movies`;

Ejecutando la consulta anterior en MySQL El banco de trabajo que utiliza myflixdb nos da los siguientes resultados.

MAX('year_released')
2012

Función SUMA

Supongamos que queremos un informe que proporcione el monto total de los pagos realizados hasta el momento. Podemos usar el MySQL SUM función que devuelve la suma de todos los valores en la columna especificada. SUM sólo funciona en campos numéricos. Los valores nulos se excluyen del resultado devuelto.

La siguiente tabla muestra los datos de la tabla de pagos:

identificación_pago número de socio fecha de pago descripción cantidad pagada número_de_referencia_externo
1 1 23-07-2012 Pago de alquiler de película 2500 11
2 1 25-07-2012 Pago de alquiler de película 2000 12
3 3 30-07-2012 Pago de alquiler de película 6000 NULL

La consulta que se muestra a continuación obtiene todos los pagos realizados y los resume para obtener un único resultado.

SELECT SUM(`amount_paid`) FROM `payments`;

Ejecutando la consulta anterior en MySQL El banco de trabajo contra myflixdb arroja los siguientes resultados.

SUM('amount_paid')
10500

AVG función

MySQL AVG función devuelve el promedio de los valores en una columna especificada. Al igual que la función SUMA, funciona sólo en tipos de datos numéricos.

Supongamos que queremos encontrar el importe medio pagado. Podemos utilizar la siguiente consulta:

SELECT AVG(`amount_paid`)  FROM `payments`;

Ejecutando la consulta anterior en MySQL banco de trabajo, nos da los siguientes resultados.

AVG('amount_paid')
3500

Brain Teaser

Crees que las funciones agregadas son fáciles. ¡Prueba esto!

El siguiente ejemplo agrupa a los miembros por nombre, cuenta el número total de pagos, el monto de pago promedio y el total general de los montos de pago.

SELECT m.`full_names`,COUNT(p.`payment_id`) AS  `paymentscount`,AVG(p.`amount_paid`)  AS `averagepaymentamount`,SUM(p.`amount_paid`)  AS `totalpayments` FROM members m, payments p WHERE m.`membership_number` = p.`membership_number` GROUP BY m.`full_names`;

Ejecutando el ejemplo anterior en MySQL workbench nos da los siguientes resultados.

AVG función

Resumen

  • MySQL admite las cinco (5) funciones agregadas estándar ISO COUNT, SUM, AVG, MÍN y MÁX.
  • SUMA y AVG Las funciones solo funcionan con datos numéricos.
  • Si desea excluir valores duplicados de los resultados de la función agregada, utilice la palabra clave DISTINCT. La palabra clave ALL incluye incluso duplicados. Si no se especifica nada, TODO se asume como valor predeterminado.
  • Las funciones agregadas se pueden utilizar junto con otras cláusulas SQL como GRUPO POR

Boletín diario de Guru99

Empieza el día con las últimas y más importantes noticias sobre IA, entregadas ahora mismo.