Funciones agregadoras y agrupación de datos con MySQL

Clase 21 de 24Curso de Fundamentos de Bases de Datos

Resumen

Aprender a utilizar funciones agregadoras y group by en MySQL permite transformar datos crudos en valiosa información de negocio. Conocer cómo aplicar funciones como COUNT, SUM y AVG, y combinar todo ello con sentencias WHERE y HAVING, brinda claridad sobre datos específicos ideales para la toma de decisiones comerciales estratégicas.

¿Qué son y para qué sirven las funciones agregadoras en MySQL?

Las funciones agregadoras, como su nombre lo indica, combinan múltiples filas de datos y producen un resultado resumido. Algunas funciones frecuentes son:

  • COUNT: cuenta las filas que cumplen con cierta condición. Por ejemplo, select count(*) from products where price < 500; te dará la cantidad de productos con precios por debajo de 500 pesos.
  • SUM: calcula la suma total de valores en una columna numérica específica. Por ejemplo, sumando el stock disponible se obtiene la cantidad total de artículos disponibles originalmente.
  • AVG: muestra el promedio de valores en columnas numéricas, como calcular el precio promedio de productos.

Estas funciones son esenciales para extraer información práctica y comprensible de grandes cantidades de datos.

¿Cómo sacar provecho del ´case´ y ´group by´?

La cláusula GROUP BY permite agrupar filas según valores comunes en una columna específica, mientras que CASE permite definir resultados según condiciones concretas.

¿Cómo categorizar usando ´case´?

La estructura básica del comando CASE es así:

SELECT email,
       CASE
         WHEN email LIKE '%@gmail.com' THEN 'Gmail'
         WHEN email LIKE '%@hotmail.com' THEN 'Hotmail'
         ELSE 'Otro proveedor'
       END AS proveedor
FROM clients;

Este código evalúa cada dirección de correo y asigna una categoría basada en su proveedor.

¿Qué sucede al combinar ´case´ con ´group by´?

Si deseas contar la cantidad de clientes según el proveedor de su correo electrónico, utiliza:

SELECT CASE
         WHEN email LIKE '%@gmail.com' THEN 'Gmail'
         WHEN email LIKE '%@hotmail.com' THEN 'Hotmail'
         ELSE 'Otro proveedor'
       END AS proveedor,
       COUNT(*) AS total_clients
FROM clients
GROUP BY proveedor;

La combinación genera información organizada que muestra claramente la cantidad de cuentas de cada proveedor de correo existentes en la base de clientes.

¿Cómo optimizar búsquedas usando ´where´y ´having´?

Usar conjuntamente WHERE, GROUP BY y HAVING permite disfrutar aún más del poder de MySQL al ordenar y filtrar conjuntos extensos de datos:

  • WHERE filtra filas antes del proceso de agrupamiento.
  • HAVING hace lo mismo, pero posterior al agrupamiento, funcionando específicamente sobre resultados agrupados.

¿Cómo se usan de forma conjunta?

Por ejemplo, si se quiere obtener solamente los proveedores con menos de cien clientes, la consulta sería:

SELECT CASE
         WHEN email LIKE '%@gmail.com' THEN 'Gmail'
         WHEN email LIKE '%@hotmail.com' THEN 'Hotmail'
         ELSE 'Otro proveedor'
       END AS proveedor,
       COUNT(*) AS total_clients
FROM clients
GROUP BY proveedor
HAVING total_clients < 100;

Esta consulta solo devolverá los proveedores de correo electrónico con menos de cien registros.

Invitamos a todos los interesados en mejorar sus habilidades en SQL a compartir dudas y ejercicios prácticos adicionales en los comentarios.