Métodos de agregación de datos mensuales y anuales usando la función COUNT en SQL

La función COUNT en SQL es una herramienta básica para agregar de manera eficiente el número de registros en una base de datos. En este artículo, explicaremos cómo agregar datos mensuales y anuales con ejemplos específicos. La agregación de datos es una habilidad fundamental en la inteligencia empresarial y la creación de informes. Desde los conceptos básicos hasta el uso avanzado de SQL, explicaremos de manera clara utilizando ejemplos con datos reales.

Índice

Uso básico de la función COUNT

La función COUNT es una función de agregación en SQL que devuelve el número de valores no nulos en una columna especificada. El uso básico de esta función permite obtener el número total de registros en una tabla o el número de registros que cumplen ciertas condiciones. A continuación, se muestra la sintaxis básica y un ejemplo simple.

Sintaxis básica

SELECT COUNT(column_name)  
FROM table_name  
WHERE condition;

Ejemplo de uso

Por ejemplo, si desea obtener el número total de clientes en una tabla de clientes (customers), puede escribir la siguiente consulta.

SELECT COUNT(*)  
FROM customers;

Esta consulta devuelve el número total de registros en la tabla customers. También es posible obtener el número de registros que cumplen con ciertas condiciones.

Ejemplo con condiciones específicas

Por ejemplo, si desea obtener el número de clientes activos, puede hacerlo de la siguiente manera.

SELECT COUNT(*)  
FROM customers  
WHERE status = 'active';

Esta consulta devuelve el número de clientes cuyo estado es ‘active’. Esto facilita la agregación de datos basada en condiciones específicas.

Método para la agregación de datos mensuales

La agregación de datos mensuales es muy importante para comprender las tendencias de datos en un período específico. Aquí explicaremos cómo agregar datos mensuales utilizando la función COUNT de SQL y la cláusula GROUP BY.

Sintaxis básica

SELECT EXTRACT(YEAR FROM date_column) AS year, EXTRACT(MONTH FROM date_column) AS month, COUNT(*)  
FROM table_name  
GROUP BY EXTRACT(YEAR FROM date_column), EXTRACT(MONTH FROM date_column)  
ORDER BY year, month;

Ejemplo de uso

Por ejemplo, para obtener el número de pedidos por mes desde una tabla de pedidos (orders), puede escribir la siguiente consulta.

SELECT EXTRACT(YEAR FROM order_date) AS year, EXTRACT(MONTH FROM order_date) AS month, COUNT(*)  
FROM orders  
GROUP BY EXTRACT(YEAR FROM order_date), EXTRACT(MONTH FROM order_date)  
ORDER BY year, month;

Esta consulta agrega el número de pedidos en la tabla orders basándose en la columna order_date, y muestra los resultados ordenados por año y mes.

Ejemplo avanzado

Además, es posible agregar el número de pedidos por mes especificando condiciones adicionales, como un cliente en particular.

SELECT EXTRACT(YEAR FROM order_date) AS year, EXTRACT(MONTH FROM order_date) AS month, COUNT(*)  
FROM orders  
WHERE customer_id = 123  
GROUP BY EXTRACT(YEAR FROM order_date), EXTRACT(MONTH FROM order_date)  
ORDER BY year, month;

Esta consulta agrega el número de pedidos por mes para un cliente específico (customer_id = 123) y muestra los resultados. Agregar condiciones permite un análisis de datos más detallado.

Método para la agregación de datos anuales

La agregación de datos anuales es útil para comprender las tendencias de datos a largo plazo. A continuación, explicamos cómo agregar datos anuales utilizando la función COUNT y la cláusula GROUP BY en SQL.

Sintaxis básica

SELECT EXTRACT(YEAR FROM date_column) AS year, COUNT(*)  
FROM table_name  
GROUP BY EXTRACT(YEAR FROM date_column)  
ORDER BY year;

Ejemplo de uso

Por ejemplo, para obtener el número de pedidos por año en una tabla de pedidos (orders), puede escribir la siguiente consulta.

SELECT EXTRACT(YEAR FROM order_date) AS year, COUNT(*)  
FROM orders  
GROUP BY EXTRACT(YEAR FROM order_date)  
ORDER BY year;

Esta consulta agrega el número de pedidos en la tabla orders basándose en la columna order_date y muestra los resultados ordenados por año.

Ejemplo avanzado

Puede realizar una agregación de datos anual más detallada añadiendo condiciones específicas. Por ejemplo, para agregar el número de pedidos anuales por categoría de producto específica, la consulta sería la siguiente.

SELECT EXTRACT(YEAR FROM order_date) AS year, COUNT(*)  
FROM orders  
WHERE product_category = 'Electronics'  
GROUP BY EXTRACT(YEAR FROM order_date)  
ORDER BY year;

Esta consulta agrega el número de pedidos anuales para la categoría de producto ‘Electronics’ y muestra los resultados. Agregar condiciones específicas permite obtener conocimientos más profundos.

Agregación más detallada

En algunos casos, puede ser útil combinar la agregación anual y mensual. La consulta en ese caso es la siguiente.

SELECT EXTRACT(YEAR FROM order_date) AS year, EXTRACT(MONTH FROM order_date) AS month, COUNT(*)  
FROM orders  
GROUP BY EXTRACT(YEAR FROM order_date), EXTRACT(MONTH FROM order_date)  
ORDER BY year, month;

Esta consulta agrega los pedidos agrupados por año y mes, lo que permite un análisis de datos más detallado.

Combinación de la función COUNT y la cláusula GROUP BY

La combinación de la función COUNT y la cláusula GROUP BY es una herramienta muy potente para agregar datos en SQL. Aquí, explicaremos cómo usar la cláusula GROUP BY para agregar datos por grupos específicos.

Sintaxis básica

SELECT column_name, COUNT(*)  
FROM table_name  
GROUP BY column_name  
ORDER BY COUNT(*) DESC;

Ejemplo de uso

Por ejemplo, si desea agregar el número de clientes por ciudad desde una tabla de clientes (customers), puede escribir la siguiente consulta.

SELECT city, COUNT(*)  
FROM customers  
GROUP BY city  
ORDER BY COUNT(*) DESC;

Esta consulta agrega el número de clientes por ciudad en la tabla customers y muestra los resultados ordenados de mayor a menor número de clientes.

Uso con múltiples columnas

También es posible agregar datos utilizando múltiples columnas. Por ejemplo, para agregar el número de clientes por ciudad y año, puede hacerlo de la siguiente manera.

SELECT city, EXTRACT(YEAR FROM signup_date) AS year, COUNT(*)  
FROM customers  
GROUP BY city, EXTRACT(YEAR FROM signup_date)  
ORDER BY city, year;

Esta consulta agrega el número de clientes por ciudad y año, ordenando los resultados por ciudad y año.

Uso de la cláusula HAVING

Al usar la cláusula HAVING junto con GROUP BY, es posible filtrar solo los grupos que cumplen con ciertas condiciones. Por ejemplo, para mostrar solo las ciudades con 50 o más clientes, puede hacerlo de la siguiente manera.

SELECT city, COUNT(*)  
FROM customers  
GROUP BY city  
HAVING COUNT(*) >= 50  
ORDER BY COUNT(*) DESC;

Esta consulta muestra solo las ciudades con 50 o más clientes. La cláusula HAVING permite establecer condiciones en los resultados de la agregación por grupos.

La combinación de la función COUNT y la cláusula GROUP BY permite agregar y analizar la información en una base de datos de manera efectiva.

Consultas de ejemplo con datos reales

Mostrar consultas de ejemplo con datos reales facilita la comprensión del uso práctico de la función COUNT y la cláusula GROUP BY. Aquí, proporcionamos ejemplos específicos utilizando datos ficticios de pedidos.

Estructura de la tabla de pedidos

Primero, revisemos la estructura de la tabla de pedidos (orders) en la base de datos de ejemplo. Esta tabla contiene las siguientes columnas:

    • order_id (ID del pedido)

    • customer_id (ID del cliente)

    • order_date (Fecha del pedido)

    • product_category (Categoría del producto)

    • amount (Monto del pedido)

Datos de ejemplo

CREATE TABLE orders (  
    order_id INT,  
    customer_id INT,  
    order_date DATE,  
    product_category VARCHAR(50),  
    amount DECIMAL(10, 2)  
);  

INSERT INTO orders (order_id, customer_id, order_date, product_category, amount) VALUES  
(1, 101, '2023-01-15', 'Electronics', 299.99),  
(2, 102, '2023-02-20', 'Books', 19.99),  
(3, 103, '2023-01-22', 'Electronics', 149.99),  
(4, 104, '2023-03-15', 'Clothing', 79.99),  
(5, 105, '2023-03-30', 'Books', 9.99);

Consulta para agregar el número de pedidos mensuales

La siguiente consulta agrega el número de pedidos mensuales en la tabla de pedidos.



SELECT EXTRACT(YEAR FROM order_date) AS year, EXTRACT(MONTH FROM order_date) AS month, COUNT(*)  
FROM orders  
GROUP BY EXTRACT(YEAR FROM order_date), EXTRACT(MONTH FROM order_date)  
ORDER BY year, month;

Resultados de la consulta

year month count
2023 1 2
2023 2 1
2023 3 2

Consulta para agregar el monto total de pedidos anuales

A continuación, mostramos una consulta para agregar el monto total de pedidos anuales.

SELECT EXTRACT(YEAR FROM order_date) AS year, SUM(amount) AS total_amount  
FROM orders  
GROUP BY EXTRACT(YEAR FROM order_date)  
ORDER BY year;

Resultados de la consulta

year total_amount
2023 559.95

Consulta para agregar el número de pedidos por categoría de producto

La consulta para agregar el número de pedidos por categoría de producto es la siguiente.

SELECT product_category, COUNT(*)  
FROM orders  
GROUP BY product_category  
ORDER BY COUNT(*) DESC;

Resultados de la consulta

product_category count
Electronics 2
Books 2
Clothing 1

Estos ejemplos de consulta permiten realizar agregaciones efectivas en bases de datos reales.

Ejemplos avanzados: Agregación con múltiples condiciones

La combinación de múltiples condiciones para agregar datos permite realizar un análisis más detallado. A continuación, se presentan ejemplos avanzados de agregación de datos con múltiples condiciones.

Consulta para agregar el número de pedidos mensuales por categoría de producto

La siguiente consulta agrega el número de pedidos mensuales por categoría de producto.

SELECT product_category, EXTRACT(YEAR FROM order_date) AS year, EXTRACT(MONTH FROM order_date) AS month, COUNT(*)  
FROM orders  
GROUP BY product_category, EXTRACT(YEAR FROM order_date), EXTRACT(MONTH FROM order_date)  
ORDER BY product_category, year, month;

Resultados de la consulta

product_category year month count
Books 2023 2 1
Books 2023 3 1
Clothing 2023 3 1
Electronics 2023 1 2

Consulta para agregar el monto total anual por cliente

Para agregar el monto total anual por cliente, puede utilizar la siguiente consulta.

SELECT customer_id, EXTRACT(YEAR FROM order_date) AS year, SUM(amount) AS total_amount  
FROM orders  
GROUP BY customer_id, EXTRACT(YEAR FROM order_date)  
ORDER BY customer_id, year;

Resultados de la consulta

customer_id year total_amount
101 2023 299.99
102 2023 19.99
103 2023 149.99
104 2023 79.99
105 2023 9.99

Agregación filtrada por condiciones específicas

Por ejemplo, si desea agregar solo los pedidos con un monto mayor o igual a 100 dólares por mes, puede hacerlo de la siguiente manera.

SELECT EXTRACT(YEAR FROM order_date) AS year, EXTRACT(MONTH FROM order_date) AS month, COUNT(*)  
FROM orders  
WHERE amount >= 100  
GROUP BY EXTRACT(YEAR FROM order_date), EXTRACT(MONTH FROM order_date)  
ORDER BY year, month;

Resultados de la consulta

year month count
2023 1 2

Combinación de diferentes métodos de agregación

Por último, se muestra un ejemplo que combina diferentes métodos de agregación. La siguiente consulta agrega el número de clientes por ciudad y el monto promedio de pedidos en cada ciudad.

SELECT city, COUNT(customer_id) AS customer_count, AVG(amount) AS average_order_amount  
FROM customers  
JOIN orders ON customers.customer_id = orders.customer_id  
GROUP BY city  
ORDER BY customer_count DESC;

Resultados de la consulta

city customer_count average_order_amount
New York 5 159.95
Los Angeles 3 129.99
Chicago 2 99.99

Estos ejemplos avanzados enseñan cómo realizar la agregación de datos combinando múltiples condiciones para un análisis de datos más completo y multidimensional.

Ejercicios

Para afianzar el conocimiento, intente resolver los siguientes ejercicios. Estos ejercicios están diseñados para mejorar las habilidades prácticas en la agregación de datos usando la función COUNT y la cláusula GROUP BY en SQL.

Ejercicio 1: Agregar el número de clientes anuales

La tabla de clientes (customers) contiene el ID de cliente (customer_id) y la fecha de registro (signup_date). Cree una consulta que agregue el número de clientes nuevos por año.

-- Ejemplo de respuesta  
SELECT EXTRACT(YEAR FROM signup_date) AS year, COUNT(*)  
FROM customers  
GROUP BY EXTRACT(YEAR FROM signup_date)  
ORDER BY year;

Ejercicio 2: Agregar el monto total de pedidos por categoría de producto

La tabla de pedidos (orders) contiene la categoría del producto (product_category) y el monto del pedido (amount). Cree una consulta que agregue el monto total de pedidos por categoría de producto.

-- Ejemplo de respuesta  
SELECT product_category, SUM(amount) AS total_amount  
FROM orders  
GROUP BY product_category  
ORDER BY total_amount DESC;

Ejercicio 3: Agregar el número de pedidos mensuales en un año específico

Cree una consulta para agregar el número de pedidos mensuales en 2023 desde la tabla de pedidos (orders).

-- Ejemplo de respuesta  
SELECT EXTRACT(MONTH FROM order_date) AS month, COUNT(*)  
FROM orders  
WHERE EXTRACT(YEAR FROM order_date) = 2023  
GROUP BY EXTRACT(MONTH FROM order_date)  
ORDER BY month;

Ejercicio 4: Agregar el monto total anual por cliente

Combine las tablas de clientes (customers) y pedidos (orders) para crear una consulta que agregue el monto total anual por cliente.

-- Ejemplo de respuesta  
SELECT customers.customer_id, EXTRACT(YEAR FROM orders.order_date) AS year, SUM(orders.amount) AS total_amount  
FROM customers  
JOIN orders ON customers.customer_id = orders.customer_id  
GROUP BY customers.customer_id, EXTRACT(YEAR FROM orders.order_date)  
ORDER BY customers.customer_id, year;

Ejercicio 5: Mostrar solo las categorías de productos con 50 o más pedidos

Cree una consulta que muestre solo las categorías de productos con 50 o más pedidos desde la tabla de pedidos (orders).

-- Ejemplo de respuesta  
SELECT product_category, COUNT(*) AS order_count  
FROM orders  
GROUP BY product_category  
HAVING COUNT(*) >= 50  
ORDER BY order_count DESC;

Estos ejercicios ayudan a practicar la agregación de datos usando la función COUNT y la cláusula GROUP BY en SQL. Intente resolver cada problema y verifique si su consulta es correcta.

Resumen

En este artículo, hemos explicado en detalle cómo realizar la agregación de datos mensuales y anuales utilizando la función COUNT en SQL. La combinación de la función COUNT y la cláusula GROUP BY permite agregar y analizar eficazmente la información en una base de datos. Desde el uso básico hasta ejemplos avanzados y ejercicios prácticos, hemos cubierto todo lo necesario para mejorar sus habilidades en la agregación de datos. Utilice este conocimiento en inteligencia empresarial y en la creación de informes.

Índice