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,CASEWHEN email LIKE'%@gmail.com'THEN'Gmail'WHEN email LIKE'%@hotmail.com'THEN'Hotmail'ELSE'Otro proveedor'ENDAS 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:
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.
Siguiendo los pasos de Sergio y Alan, me surgió la curiosidad de dejar solo el nombre del proveedor como el ejercicio que venimos haciendo en clases, y descubrí que también se puede aplicar como una cadena dentro de otra cadena.
SELECT SUBSTRING_INDEX (SUBSTRING_INDEX(email,'@',-1),'.',1) AS proveedor,
COUNT(*) AS cantidad
FROM clients
GROUP BY proveedor
ORDER BY cantidad DESC;
Las funciones de ventana en SQL son fundamentales para realizar cálculos en conjuntos de filas que están relacionadas entre sí. Aquí hay un resumen con ejemplos de las más importantes:
ROW_NUMBER(): Asigna un número único a cada fila de un conjunto de resultados.
SELECT email, ROW_NUMBER()OVER(ORDERBY email)AS row_num FROM clients;
RANK(): Similar a ROW_NUMBER(), pero permite que filas con valores iguales reciban el mismo rango.
SELECT email, RANK()OVER(ORDERBY total_purchases DESC)AS rank FROM clients;
DENSE_RANK(): Igual que RANK(), pero no deja huecos en los números.
SELECT email, DENSE_RANK()OVER(ORDERBY total_purchases DESC)AS dense_rank FROM clients;
Estas funciones permiten realizar análisis complejos y obtener información valiosa de los datos sin necesidad de subconsultas complicadas, facilitando la toma de decisiones empresariales.
Al usar funciones como COUNT, SUM y AVG, es importante evitar los siguientes errores comunes:
No usar cláusulas WHERE adecuadas: Esto puede llevar a contar o sumar registros que no sean relevantes, generando resultados erróneos.
No agrupar correctamente: Si se omite la cláusula GROUP BY, se perderá la capacidad de segmentar datos, llevando a resultados globales en lugar de específicos.
Ignorar valores NULL: Las funciones de agregación pueden ignorar estos valores, lo cual puede distorsionar los resultados. Es recomendable manejar adecuadamente estos casos.
No validar la lógica del negocio: Asegúrate de que los criterios de filtrado y agrupación reflejen correctamente los requerimientos del análisis de datos.
Estos aspectos son cruciales para obtener información precisa y útil.
Para establecer una condición en SQL que verifique si un valor es distinto de otro, se utiliza la cláusula WHERE junto con el operador <>. Por ejemplo, si deseas seleccionar registros donde el email no sea igual a un valor específico, la consulta sería:
SELECT*FROM clients WHERE email <>'ejemplo@dominio.com';
En este caso, se seleccionarán todos los registros de la tabla clients donde el email sea diferente a 'ejemplo@dominio.com'.
El IF en SQL se utiliza para ejecutar condiciones dentro de una consulta. Permite evaluar una expresión o condición y retornar resultados diferentes basados en si esa condición es verdadera o falsa. Por ejemplo, puedes usar IF para clasificar datos, como determinar si un email pertenece a Gmail, Hotmail, etc.
Esta función es útil para hacer consultas más dinámicas y personalizadas, lo que te ayuda a obtener información más específica de tus bases de datos.
«Esto no es otra cosa que ruido y mucho cuidado porque, cuando tenemos muchos datos y no los operamos bien, tenemos ruido... y el ruido siempre es muy caro»