Las funciones de agregación en SQL son herramientas poderosas que permiten realizar cálculos sobre un conjunto de valores y devolver un solo valor. Estas funciones son esenciales para resumir y analizar datos en una base de datos. En PostgreSQL, las funciones de agregación más comunes incluyen COUNT, SUM, AVG, MIN, y MAX.

Conceptos Clave

  1. COUNT: Cuenta el número de filas en un conjunto de resultados.
  2. SUM: Calcula la suma de un conjunto de valores.
  3. AVG: Calcula el promedio de un conjunto de valores.
  4. MIN: Encuentra el valor mínimo en un conjunto de valores.
  5. MAX: Encuentra el valor máximo en un conjunto de valores.

Ejemplos Prácticos

COUNT

La función COUNT se utiliza para contar el número de filas que coinciden con un criterio específico.

-- Contar el número total de empleados en la tabla employees
SELECT COUNT(*) AS total_employees
FROM employees;

SUM

La función SUM se utiliza para calcular la suma de un conjunto de valores.

-- Calcular la suma de los salarios de todos los empleados
SELECT SUM(salary) AS total_salary
FROM employees;

AVG

La función AVG se utiliza para calcular el promedio de un conjunto de valores.

-- Calcular el salario promedio de los empleados
SELECT AVG(salary) AS average_salary
FROM employees;

MIN

La función MIN se utiliza para encontrar el valor mínimo en un conjunto de valores.

-- Encontrar el salario mínimo entre los empleados
SELECT MIN(salary) AS minimum_salary
FROM employees;

MAX

La función MAX se utiliza para encontrar el valor máximo en un conjunto de valores.

-- Encontrar el salario máximo entre los empleados
SELECT MAX(salary) AS maximum_salary
FROM employees;

Uso de Funciones de Agregación con GROUP BY

Las funciones de agregación se utilizan a menudo junto con la cláusula GROUP BY para agrupar filas que tienen valores en común en columnas específicas y luego realizar cálculos en cada grupo.

Ejemplo con GROUP BY

-- Calcular el salario promedio por departamento
SELECT department_id, AVG(salary) AS average_salary
FROM employees
GROUP BY department_id;

En este ejemplo, los empleados se agrupan por department_id, y se calcula el salario promedio para cada departamento.

Ejercicios Prácticos

Ejercicio 1: Contar el Número de Empleados por Departamento

Instrucción: Escribe una consulta para contar el número de empleados en cada departamento.

SELECT department_id, COUNT(*) AS employee_count
FROM employees
GROUP BY department_id;

Ejercicio 2: Calcular la Suma de Salarios por Departamento

Instrucción: Escribe una consulta para calcular la suma de los salarios en cada departamento.

SELECT department_id, SUM(salary) AS total_salary
FROM employees
GROUP BY department_id;

Ejercicio 3: Encontrar el Salario Máximo y Mínimo por Departamento

Instrucción: Escribe una consulta para encontrar el salario máximo y mínimo en cada departamento.

SELECT department_id, MAX(salary) AS max_salary, MIN(salary) AS min_salary
FROM employees
GROUP BY department_id;

Soluciones a los Ejercicios

Solución al Ejercicio 1

SELECT department_id, COUNT(*) AS employee_count
FROM employees
GROUP BY department_id;

Solución al Ejercicio 2

SELECT department_id, SUM(salary) AS total_salary
FROM employees
GROUP BY department_id;

Solución al Ejercicio 3

SELECT department_id, MAX(salary) AS max_salary, MIN(salary) AS min_salary
FROM employees
GROUP BY department_id;

Errores Comunes y Consejos

  1. Olvidar la cláusula GROUP BY: Cuando se utilizan funciones de agregación junto con columnas no agregadas, es necesario incluir la cláusula GROUP BY. De lo contrario, se producirá un error.

    -- Incorrecto: Falta la cláusula GROUP BY
    SELECT department_id, AVG(salary) AS average_salary
    FROM employees;
    
  2. Incluir columnas no agregadas sin GROUP BY: Todas las columnas en la cláusula SELECT que no son parte de una función de agregación deben estar en la cláusula GROUP BY.

    -- Incorrecto: department_id no está en GROUP BY
    SELECT department_id, AVG(salary) AS average_salary
    FROM employees;
    
  3. Usar funciones de agregación en WHERE: Las funciones de agregación no se pueden usar en la cláusula WHERE. En su lugar, se debe usar la cláusula HAVING.

    -- Incorrecto: Uso de función de agregación en WHERE
    SELECT department_id, AVG(salary) AS average_salary
    FROM employees
    WHERE AVG(salary) > 50000
    GROUP BY department_id;
    
    -- Correcto: Uso de función de agregación en HAVING
    SELECT department_id, AVG(salary) AS average_salary
    FROM employees
    GROUP BY department_id
    HAVING AVG(salary) > 50000;
    

Conclusión

Las funciones de agregación son herramientas esenciales para resumir y analizar datos en PostgreSQL. Al dominar COUNT, SUM, AVG, MIN, y MAX, y comprender cómo usarlas con GROUP BY, puedes realizar análisis complejos y obtener información valiosa de tus datos. Asegúrate de practicar con los ejercicios proporcionados y estar atento a los errores comunes para mejorar tu habilidad en el uso de funciones de agregación.

Curso de PostgreSQL

Módulo 1: Introducción a PostgreSQL

Módulo 2: Operaciones Básicas de SQL

Módulo 3: Consultas Avanzadas de SQL

Módulo 4: Diseño de Bases de Datos y Normalización

Módulo 5: Características Avanzadas de PostgreSQL

Módulo 6: Ajuste de Rendimiento y Optimización

Módulo 7: Seguridad y Gestión de Usuarios

Módulo 8: Trabajando con JSON y Características NoSQL

Módulo 9: Extensiones y Herramientas Avanzadas

Módulo 10: Estudios de Caso y Aplicaciones del Mundo Real

© Copyright 2024. Todos los derechos reservados