Volver a la lista de artículos Artículos
Lectura de 14 minutos

Funciones Agregadas SQL: Una Guía Completa para Principiantes

¿Siente curiosidad por las funciones de agregación de SQL y su aplicación en situaciones reales? En este artículo, exploraremos las funciones de agregación de SQL, mostraremos ejemplos reales y ofreceremos información valiosa sobre cómo dominarlas.

La agregación de datos es el proceso de tomar varias filas de datos y condensarlas en un único resultado o resumen. Cuando se trabaja con grandes conjuntos de datos, este proceso es muy valioso, ya que permite extraer información relevante sin tener que examinar cada punto de datos individualmente.

¿Qué son exactamente las funciones agregadas de SQL? Son funciones especializadas que realizan cálculos sobre grupos de variables y devuelven un único resultado. A diferencia de las funciones tradicionales, las funciones de agregado trabajan sobre grupos de filas de datos. Esto permite calcular estadísticas de forma eficaz o generar información resumida a partir de un conjunto de datos.

En este artículo, veremos la importancia de las funciones agregadas de SQL y cómo utilizarlas. Las explicaremos con ejemplos reales. Suena interesante, ¿verdad? Entonces echa un vistazo a nuestro curso sobre Funciones estándar de SQL. Es un buen punto de partida para aprender a procesar datos utilizando las funciones más utilizadas de SQL.

Exploración de las funciones agregadas de SQL más comunes

En el mundo de SQL, las funciones agregadas son herramientas esenciales para resumir y analizar datos de forma eficaz. Tienen una capacidad única para destilar grandes conjuntos de datos en información significativa, para facilitar el análisis estadístico y para simplificar estructuras de datos complejas.

Las funciones agregadas de SQL más utilizadas son:

  • SUM()
  • COUNT()
  • AVG()
  • MIN()
  • MAX()

Exploremos cada una de ellas a continuación.

1. SUMA()

La función SUM () devuelve el total de una columna numérica. Suele utilizarse cuando se necesita hallar el total de valores como ingresos por ventas, cantidades o gastos.

Imagina que quieres conocer la totalidad de los ingresos por ventas de tu empresa; puedes hacerlo ejecutando la siguiente consulta:

SELECT SUM(sales_amount) as total_revenue
FROM sales_data;

2. CONTAR()

La siguiente función es COUNT(). El objetivo de esta función es contar el número de filas de una tabla o el número de valores no nulos de una columna.

Supongamos que desea averiguar cuántos productos se venden en su tienda; puede utilizar la siguiente consulta:

SELECT COUNT(*) as total_products
FROM products;

En esta consulta, empleamos el asterisco (*) para indicar todas las columnas. Y contamos todas las filas de la consulta.

3. AVG()

Cuando necesite calcular el valor medio de una columna numérica, utilice la función AVG (). Resulta útil cuando se busca el precio medio, la valoración, las unidades vendidas, etc. Esta consulta, por ejemplo, sería beneficiosa si diriges un servicio de streaming por suscripción y quieres descubrir la duración media de las sesiones de usuario en tu plataforma:

SELECT AVG(session_duration) as average_session_duration
FROM user_sessions;

4. MIN()

La función MIN() devuelve el valor más pequeño de una columna. Es especialmente útil para localizar el valor más bajo o más pequeño de un conjunto de datos.

Considere la posibilidad de que un gestor intente identificar el tiempo de respuesta más rápido a una pregunta de un cliente para los tickets de soporte; la siguiente consulta puede devolver la respuesta:

SELECT MIN(response_time) as shortest_response_time
FROM customer_support_tickets;

5. MAX()

Por otro lado, la función MAX() devuelve el mayor valor de una columna. Es útil para determinar el valor más alto de un conjunto de datos.

Supongamos que posee un sitio web de comercio electrónico y desea conocer el valor más alto del pedido realizado por un cliente en su tienda en línea. Esta es la consulta que escribiría:

SELECT MAX(order_value) as max_order_value
FROM customer_orders;

Para ver más ejemplos de las funciones MIN() y MAX(), consulte Explicación de las funciones MIN() y MAX() de SQL.

Agregación de Datos en SQL

Ahora que ya hemos visto algunas de las funciones de agregación más utilizadas en SQL, veamos con más detalle el concepto de agregación de datos en SQL.

La agregación de datos es una potente técnica para resumir y analizar la información de un conjunto de datos. Permite obtener información útil realizando cálculos sobre agrupaciones de datos vinculados, lo que elimina la necesidad de inspeccionar los registros individuales, que lleva mucho tiempo.

Para concretar este concepto, considere los siguientes casos de uso en el mundo real:

  • Ventas: Para el propietario de una tienda es fundamental saber cómo contribuyen las distintas categorías de productos a las ventas totales. Puede determinar qué categoría de productos genera más dinero agregando los datos de ventas de cada categoría de productos.
  • Calificaciones de los alumnos: Si eres profesor, puede que quieras averiguar la nota media de cada asignatura de tu clase. Al agregar los datos de las calificaciones de los alumnos, puede determinar los promedios de cada asignatura e identificar las áreas de mejora.
  • Tráfico de sitios web: Supongamos que tienes un sitio web y quieres saber qué páginas reciben más tráfico. Puede encontrar las páginas más populares y gestionar los recursos de forma más eficaz agregando las estadísticas de tráfico del sitio web.
  • Salarios de empleados: Imagina que eres director de RRHH en una empresa y buscas información sobre los salarios de los distintos departamentos. SQL puede ayudarle a agregar y analizar los datos de cada departamento.

Desbloqueando el Poder de las Funciones Agregadas de SQL con GROUP BY

En la mayoría de los casos, el uso de las funciones de agregación de SQL implica el uso de la cláusula GROUP BY. Esta potente combinación permite ejecutar cálculos agregados en agrupaciones específicas de datos del conjunto de datos.

La cláusula SQL GROUP BY separa el conjunto de datos en grupos basados en valores coincidentes en una o más columnas; esto permite aplicar funciones de agregación a cada grupo de forma independiente. A continuación se muestra un resumen de la sintaxis de GROUP BY:

SELECT 
  column1, 
  column2, 
  aggregate_function(column3)
FROM table_name
GROUP BY column1, column2;

En esta consulta, los datos con valores coincidentes en column1 y column2 se convertirán en los grupos; aggregate_function(column3) es la función agregada que desea aplicar a los valores de column3 dentro de cada grupo. Veamos algunos ejemplos.

Ejemplo 1: Agrupación por ciudades y cálculo del salario medio

Imagine que tiene una base de datos de empleados que incluye información sobre los nombres, las ciudades y los salarios de los empleados. Su objetivo es averiguar cuál es el salario medio en cada ciudad. Puede hacerlo con la siguiente consulta:

SELECT 
  city, 
  AVG(salary) as average_salary
FROM employee_data
GROUP BY city;

Veamos la consulta paso a paso:

Paso 1: Agrupación por ciudades

La base de datos inicia el proceso organizando a los empleados en grupos en función de su ciudad de residencia. Cada grupo de ciudades se representa visualmente a continuación con un color diferente:

  • Grupo 1: Nueva York (Amarillo)
  • Grupo 2: San Francisco (Rojo)
  • Grupo 3: Los Ángeles (Verde)
employee_namecitysalary
JohnNew York60000
JaneNew York55000
BobSan Francisco70000
AliceSan Francisco72000
MikeLos Angeles62000
EmilyLos Angeles64000

Paso 2: Cálculo de los salarios medios

Dentro de cada grupo de ciudades, la base de datos calcula el salario medio aplicando la función agregada AVG() a la columna salary.

Resultado final:

Esta consulta SQL arroja el salario medio de cada ciudad, como se ilustra a continuación. La ejecución de esta consulta proporciona información valiosa sobre las tendencias y disparidades de remuneración entre las ciudades en las que residen sus empleados. Esta información puede ser útil para tomar decisiones informadas sobre ajustes salariales, consideraciones sobre el coste de la vida, etc.

cityaverage_sale
New York57500
San Francisco71000
Los Angeles63000

Ejemplo 2: Agrupación por categoría de producto y búsqueda de ventas totales

Supongamos que dispone de un conjunto de datos de ventas con categorías de productos y cantidades vendidas. Su objetivo es determinar las ventas totales de cada categoría de productos. Aquí tiene la consulta:

SELECT 
  product_category, 
  SUM(sales_amount) as total_sales
FROM sales_data
GROUP BY product_category;

Esta consulta agrupa los datos de ventas por categoría de producto y calcula los importes totales de ventas de cada grupo. Proporciona información útil sobre las categorías de productos más rentables. Encontrará más ejemplos de esta combinación en Cómo utilizar SUM() con GROUP BY: Guía detallada.

Ejemplo 3: Agrupación por Año y Mes para Contar Pedidos

Supongamos que gestiona una plataforma de comercio electrónico con una base de datos que incluye las fechas de los pedidos. Desea realizar un seguimiento de la cantidad de pedidos realizados cada año y mes. La siguiente consulta puede lograrlo:

SELECT 
  EXTRACT(YEAR FROM order_date) as order_year, 
  EXTRACT(MONTH FROM order_date) as order_month, 
  COUNT(*) as order_count
FROM orders
GROUP BY order_year, order_month
ORDER BY order_year, order_month;

Esta consulta agrupa los pedidos por año y mes, proporcionando una línea de tiempo de los recuentos de pedidos. Es muy útil para realizar un seguimiento de los cambios estacionales y estimar el número de pedidos mensuales. Encontrará ejemplos reales similares en Cómo utilizar COUNT() con GROUP BY.

En cada uno de estos ejemplos, la cláusula GROUP BY divide los datos en grupos basados en determinadas columnas y las funciones de agregado (AVG(), SUM() y COUNT()) ejecutan cálculos en cada grupo. Puede encontrar más ejemplos en nuestro artículo Uso de GROUP BY en SQL.

Ejemplos Reales del Uso de las Funciones Agregadas de SQL

Ahora que hemos cubierto los fundamentos de las funciones agregadas y la cláusula GROUP BY, veamos cómo podemos utilizarlas en ejemplos adicionales del mundo real.

1. Agrupación por categorías de productos para obtener información de ventas

Imagine que tiene una base de datos de ventas y desea encontrar la fecha de pedido más reciente para cada categoría de producto. Para conseguirlo, necesitamos agrupar los datos por la columna product_category y utilizar la función MAX() para seleccionar la fecha de pedido más reciente (es decir, la mayor):

SELECT 
  product_category, 
  MAX(order_date) as most_recent_order_date
FROM sales_data
GROUP BY product_category;

El análisis de la fecha de pedido más reciente para cada categoría de productos ayuda a identificar las tendencias actuales del mercado y la demanda de productos.

2. Analizar las ventas por categoría de producto y año

Un análisis más amplio puede requerir agrupar los datos por varias columnas. Por ejemplo, supongamos que necesita conocer las ventas totales de cada categoría de producto y año. Aquí tiene la consulta:

SELECT 
  product_category, 
  EXTRACT(YEAR FROM order_date) as sales_year, 
  SUM(sales_amount) as total_sales
FROM sales_data
GROUP BY product_category, sales_year;

Esta consulta agrupa los datos por dos columnas, lo que nos permite analizar las ventas tanto por categoría de producto como por año y, por tanto, nos proporciona una visión más detallada y granular.

3. Filtrar categorías de productos con ventas elevadas

Puede que necesite filtrar grupos dependiendo de la salida de una función agregada. En estos casos, lo que necesita es la cláusula HAVING. Supongamos que desea encontrar categorías de productos con ventas totales superiores a 10.000 dólares:

SELECT 
  product_category, 
  SUM(sales_amount) as total_sales
FROM sales_data
GROUP BY product_category
HAVING SUM(sales_amount) > 10000;

La cláusula HAVING filtra los resultados agrupados, mostrando aquellas categorías de productos con unas ventas totales superiores al umbral proporcionado.

Es fundamental tener en cuenta que las funciones agregadas no se pueden utilizar en la cláusula WHERE. Las funciones agregadas actúan sobre los datos que se han agrupado mediante la cláusula GROUP BY, mientras que la cláusula WHERE filtra las filas individuales antes de agruparlas.

4. Contar clientes únicos

Contar valores distintos en una columna es esencial para varios análisis. Por ejemplo, es posible que desee encontrar el número de clientes únicos:

SELECT 
  COUNT(DISTINCT customer_id) as unique_customers
FROM sales_data;

Esta consulta cuenta el número de ID de clientes únicos en los datos de ventas, lo que puede ser útil cuando se trabaja con conjuntos de datos que contienen duplicados.

5. Distinción de las funciones COUNT() para obtener informes precisos

Es importante comprender la diferencia entre COUNT(*) y COUNT(expression). COUNT(*) cuenta todas las filas de un grupo, mientras que COUNT(expression) cuenta sólo los valores noNULL de la expresión suministrada dentro de un grupo. Los valores NULL representan datos que faltan o desconocidos en un conjunto de datos.

Veamos un ejemplo:

SELECT product_category,
       COUNT(*) as total_orders,
       COUNT(discount) as discounted_orders
FROM sales_data
GROUP BY product_category;

Aquí, COUNT(*) cuenta todos los pedidos de cada categoría de producto, incluidos los que tienen valores de NULL en la columna de descuento. COUNT(discount), por otro lado, cuenta sólo los pedidos que no tienen valores de NULL en la columna discount dentro de cada categoría. Consulte nuestro artículo ¿Cuál es la diferencia entre COUNT(*), COUNT(1), COUNT(nombre de columna) y COUNT(nombre de columna DISTINTO)? para ver más ejemplos de uso de la función COUNT().

6. Obtención de información exhaustiva sobre las categorías de productos

SQL permite utilizar numerosas funciones de agregación en una única consulta para obtener una visión completa de los datos. Por ejemplo, busquemos las ventas totales, el precio medio y el precio mínimo de cada categoría de productos:

SELECT product_category,
       SUM(sales_amount) as total_sales,
       AVG(product_price) as avg_price,
       MIN(product_price) as min_price
FROM sales_data
GROUP BY product_category;

Esta consulta extrae de forma eficaz múltiples perspectivas de sus datos y, al mismo tiempo, proporciona un resumen conciso.

Preguntas frecuentes sobre la función agregada de SQL

Para terminar, abordemos algunas preguntas frecuentes sobre las funciones agregadas de SQL:

¿Puedo utilizar dos funciones agregadas en una consulta?

Sí. Como se ha demostrado en los ejemplos anteriores, puede utilizar varias funciones de agregación en una única consulta SQL. El uso de varias funciones de agregación proporciona una visión más completa de los datos. Por ejemplo, para comprender mejor la distribución de los ingresos, es posible que desee calcular no sólo el salario medio de un departamento, sino también los salarios máximo y mínimo.

Además de las funciones de agregación generales que hemos comentado, las bases de datos SQL suelen ofrecer funciones de agregación especializadas adaptadas a necesidades específicas. Por ejemplo, SQL Server incluye una función STRING_AGG() para la concatenación de cadenas dentro de un grupo. Cuando se trabaja en proyectos con requisitos de procesamiento de datos únicos, estas funciones especializadas pueden resultar indispensables.

Q. ¿Cómo puedo contar filas mediante una expresión condicional?

En SQL, las expresiones condicionales, que generalmente se implementan con la sentencia CASE WHEN, se pueden utilizar para contar filas basándose en condiciones especificadas. Por ejemplo, puede contar el número de pedidos con ingresos totales superiores a 1.000 dólares:

SELECT 
  COUNT(CASE WHEN sales_amount > 1000 THEN 1 ELSE NULL END) as high_value_orders
FROM sales_data;

Encontrará más ejemplos de consultas similares y de uso avanzado de expresiones condicionales en nuestro artículo Cómo utilizar CASE WHEN en GROUP BY.

Q. ¿Por qué no se permiten las funciones agregadas en GROUP BY?

Las funciones agregadas no están permitidas en GROUP BY porque operan sobre datos agrupados. GROUP BY está pensada para agrupar filas por determinados criterios, mientras que las funciones agregadas descomponen las filas en un único valor. Mezclar estas dos funciones daría lugar a ambigüedad y dificultaría la decisión sobre cómo agrupar y agregar correctamente los datos.

Q. ¿Por qué debería utilizar la cláusula HAVING con funciones agregadas en SQL?

En las consultas SQL que contienen funciones de agregación, la cláusula HAVING se utiliza para filtrar los resultados basándose en el resultado de la función de agregación. Permite aplicar condiciones a agrupaciones de datos después de que se hayan agregado. Por ejemplo, si desea obtener sólo los departamentos con un salario medio de 50.000 dólares o más, puede utilizar la cláusula HAVING para filtrar los resultados agrupados en consecuencia.

SELECT 
  department,
  AVG(salary) as average_salary
FROM employee_data
GROUP BY department
HAVING AVG(salary) >= 50000;

Q. ¿Cómo puedo obtener más información sobre las funciones agregadas de SQL?

Para profundizar en el conocimiento de las funciones agregadas de SQL y sus aplicaciones prácticas, considere la posibilidad de realizar cursos en línea, leer la documentación de SQL y practicar con conjuntos de datos reales. El curso Funciones estándar de SQL mencionado anteriormente es un buen lugar para empezar; explica el uso de funciones SQL en varios tipos de datos y tiene 211 tareas interactivas para que pueda practicar.

Funciones agregadas de SQL: Desvelando el conocimiento de los datos

En conclusión, las funciones agregadas de SQL son potentes herramientas para resumir y evaluar datos en bases de datos relacionales. Tanto si es un principiante en SQL como si es un usuario experimentado, saber utilizar las funciones de agregación de forma eficaz le ayudará a extraer información útil de sus datos, a tomar decisiones basadas en datos y, en última instancia, a mejorar el rendimiento de su empresa.

Adquirir conocimientos de SQL puede suponer una ventaja competitiva en el actual mercado empresarial basado en los datos. Si desea profundizar en SQL, le recomiendo nuestro paquete SQL de Todo, para siempre . Esta oferta contiene todos los cursos de SQL actuales y futuros en cuatro dialectos de SQL diferentes. He aquí otros aspectos destacados de nuestra oferta:

  • Curso completo de SQL. Los siete cursos y casi 900 ejercicios de este paquete ofrecen un completo itinerario de aprendizaje del SQL moderno, desde los conceptos básicos hasta los más avanzados.
  • Ejercicio de SQL. Esta opción es para aquellos que buscan mucha práctica interactiva de SQL. Contiene nueve cursos interactivos y más de 800 ejercicios prácticos - y seguimos añadiendo más.
  • Mensualmente Ejercicio de SQL. Cada mes publicamos un nuevo curso práctico de SQL de nivel básico o avanzado.

¡Feliz aprendizaje!