CodeGym /Cursos /SQL SELF /Creando informes básicos

Creando informes básicos

SQL SELF
Nivel 59 , Lección 2
Disponible

Creando informes básicos

Antes de liarnos con la sintaxis de SQL y las variables, recuerda: las funciones agregadas son tus mejores colegas para contar de todo. Te ayudan a calcular datos totales, promedios y hacer magia con grandes cantidades de filas.

Las funciones agregadas se usan para hacer operaciones matemáticas sobre grupos de filas. Las principales son:

  • SUM(): suma los valores.
  • AVG(): calcula el valor promedio.
  • COUNT(): cuenta el número de filas en el resultado.

Las funciones agregadas son útiles cuando trabajas con grandes volúmenes de datos y quieres un informe resumido: cuántos pedidos tienes, cuál es el volumen total, o cuál fue el ticket más alto de hoy. Vamos a ver algunas funciones agregadas.

Contando filas: función COUNT()

La función COUNT() te permite contar el número de filas en una tabla. Vamos a ver cómo funciona con ejemplos.

-- Conteo simple de todas las filas en la tabla de pedidos
SELECT COUNT(*) AS total_orders
FROM orders;

-- Conteo de clientes únicos
SELECT COUNT(DISTINCT customer_id) AS unique_customers
FROM orders;

-- Conteo de pedidos con importe mayor que 100
SELECT COUNT(*) AS high_value_orders
FROM orders
WHERE total_amount > 100;

La función COUNT() se usa mucho para contar registros, valores únicos, y también junto con filtros, por ejemplo, "cuántos estudiantes se han apuntado a cursos de Python".

Sumando datos: función SUM()

La función SUM() calcula la suma de los valores en una columna. Ahora vamos a sumar todas las compras de los clientes.

-- Suma total de ingresos
SELECT SUM(total_amount) AS total_revenue
FROM orders;

-- Suma de compras de un cliente concreto
SELECT SUM(total_amount) AS customer_spending
FROM orders
WHERE customer_id = 101;

-- Suma de pedidos por categorías
SELECT category, SUM(total_amount) AS category_revenue
FROM orders
GROUP BY category;

SUM() es la herramienta principal para analizar ventas, ingresos y cualquier otra suma. ¿Por ejemplo, necesitas saber los ingresos de un centro de negocios el mes pasado? Fácil.

Valores promedio: función AVG()

La función AVG() te ayuda a calcular el valor promedio de un conjunto de datos. Por ejemplo, la nota media de los estudiantes o el ticket promedio de un cliente.

-- Importe promedio de pedido
SELECT AVG(total_amount) AS average_order_value
FROM orders;

-- Importe promedio de pedidos por categorías
SELECT category, AVG(total_amount) AS average_order_value
FROM orders
GROUP BY category;

-- Ticket promedio de clientes en los últimos 7 días
SELECT AVG(total_amount) AS avg_check_last_week
FROM orders
WHERE order_date >= NOW() - INTERVAL '7 days';

El valor promedio es útil para analizar la calidad del servicio, detectar anomalías y calcular métricas clave, como el beneficio medio por cliente.

Usando funciones agregadas en analítica

Ahora que ya conocemos las funciones principales, vamos a ver cómo usarlas para crear informes analíticos básicos.

Ejemplo 1: ingresos totales y número de pedidos

Supón que quieres saber cuántos pedidos se han hecho y cuál es el ingreso total del mes.

SELECT
    COUNT(*) AS total_orders,
    SUM(total_amount) AS total_revenue
FROM orders
WHERE order_date >= '2023-10-01' AND order_date <= '2023-10-31';

Ejemplo 2: ingreso promedio por categorías

¿Y si queremos dividir los ingresos por categorías de productos?

SELECT
    category,
    COUNT(*) AS total_orders,
    SUM(total_amount) AS total_revenue,
    AVG(total_amount) AS avg_order_value
FROM orders
GROUP BY category;

Ejemplo 3: pedidos de los últimos 7 días

A menudo hay que analizar métricas en periodos cortos, como la última semana.

SELECT
    COUNT(*) AS orders_last_week,
    SUM(total_amount) AS revenue_last_week,
    AVG(total_amount) AS avg_check_last_week
FROM orders
WHERE order_date >= NOW() - INTERVAL '7 days';

Casos prácticos con tareas concretas

Tarea: Análisis de ventas por regiones

Supón que eres dueño de una cadena de tiendas y quieres analizar cómo se han distribuido los ingresos por regiones.

SELECT
    region,
    COUNT(*) AS total_orders,
    SUM(total_amount) AS total_revenue,
    AVG(total_amount) AS average_order_value
FROM orders
GROUP BY region
ORDER BY total_revenue DESC;

Tarea: Top-10 clientes por ingresos

Ahora vamos a añadir un poco de lógica para sacar el top-10 de clientes por suma total de pedidos.

SELECT
    customer_id,
    SUM(total_amount) AS total_spending
FROM orders
GROUP BY customer_id
ORDER BY total_spending DESC
LIMIT 10;

Tarea: Comparando ingresos por días de la semana

¿Quieres saber en qué días de la semana tu negocio gana más? Aquí tienes un ejemplo:

SELECT
    TO_CHAR(order_date, 'Day') AS day_of_week,
    SUM(total_amount) AS total_revenue,
    AVG(total_amount) AS avg_order_value
FROM orders
GROUP BY TO_CHAR(order_date, 'Day')
ORDER BY total_revenue DESC;
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION