Introducción

Las subconsultas, también conocidas como consultas anidadas, son consultas SQL que se encuentran dentro de otra consulta SQL. Son una herramienta poderosa que permite realizar consultas complejas y obtener resultados específicos que no se pueden lograr fácilmente con una sola consulta.

Conceptos Clave

  1. Subconsulta: Una consulta dentro de otra consulta.
  2. Consulta externa: La consulta principal que contiene la subconsulta.
  3. Subconsulta escalar: Devuelve un solo valor.
  4. Subconsulta de fila: Devuelve una sola fila con múltiples columnas.
  5. Subconsulta de tabla: Devuelve múltiples filas y columnas.

Tipos de Subconsultas

Subconsultas en la Cláusula SELECT

Las subconsultas pueden ser utilizadas en la cláusula SELECT para calcular valores específicos.

SELECT
    employee_id,
    (SELECT department_name
     FROM departments
     WHERE departments.department_id = employees.department_id) AS department_name
FROM
    employees;

Subconsultas en la Cláusula WHERE

Las subconsultas en la cláusula WHERE se utilizan para filtrar resultados basados en los resultados de otra consulta.

SELECT
    employee_id,
    first_name,
    last_name
FROM
    employees
WHERE
    department_id = (SELECT department_id
                     FROM departments
                     WHERE department_name = 'Sales');

Subconsultas en la Cláusula FROM

Las subconsultas en la cláusula FROM permiten tratar el resultado de una subconsulta como una tabla temporal.

SELECT
    sub.employee_id,
    sub.first_name,
    sub.last_name
FROM
    (SELECT
         employee_id,
         first_name,
         last_name
     FROM
         employees
     WHERE
         salary > 50000) AS sub;

Ejemplos Prácticos

Ejemplo 1: Subconsulta Escalar

Encuentra el nombre del departamento para cada empleado.

SELECT
    employee_id,
    (SELECT department_name
     FROM departments
     WHERE departments.department_id = employees.department_id) AS department_name
FROM
    employees;

Ejemplo 2: Subconsulta en la Cláusula WHERE

Encuentra los empleados que trabajan en el departamento de 'Marketing'.

SELECT
    employee_id,
    first_name,
    last_name
FROM
    employees
WHERE
    department_id = (SELECT department_id
                     FROM departments
                     WHERE department_name = 'Marketing');

Ejemplo 3: Subconsulta en la Cláusula FROM

Encuentra los empleados con un salario superior a 60,000 y muestra sus detalles.

SELECT
    sub.employee_id,
    sub.first_name,
    sub.last_name
FROM
    (SELECT
         employee_id,
         first_name,
         last_name
     FROM
         employees
     WHERE
         salary > 60000) AS sub;

Ejercicios Prácticos

Ejercicio 1: Subconsulta Escalar

Encuentra el nombre del gerente para cada empleado.

SELECT
    employee_id,
    (SELECT first_name
     FROM employees AS mgr
     WHERE mgr.employee_id = employees.manager_id) AS manager_name
FROM
    employees;

Ejercicio 2: Subconsulta en la Cláusula WHERE

Encuentra los empleados que trabajan en el departamento con el ID más alto.

SELECT
    employee_id,
    first_name,
    last_name
FROM
    employees
WHERE
    department_id = (SELECT MAX(department_id)
                     FROM departments);

Ejercicio 3: Subconsulta en la Cláusula FROM

Encuentra los empleados cuyo salario es mayor que el salario promedio de todos los empleados.

SELECT
    emp.employee_id,
    emp.first_name,
    emp.last_name
FROM
    employees AS emp
WHERE
    emp.salary > (SELECT AVG(salary)
                  FROM employees);

Soluciones a los Ejercicios

Solución 1

SELECT
    employee_id,
    (SELECT first_name
     FROM employees AS mgr
     WHERE mgr.employee_id = employees.manager_id) AS manager_name
FROM
    employees;

Solución 2

SELECT
    employee_id,
    first_name,
    last_name
FROM
    employees
WHERE
    department_id = (SELECT MAX(department_id)
                     FROM departments);

Solución 3

SELECT
    emp.employee_id,
    emp.first_name,
    emp.last_name
FROM
    employees AS emp
WHERE
    emp.salary > (SELECT AVG(salary)
                  FROM employees);

Conclusión

Las subconsultas son una herramienta esencial en SQL que permiten realizar consultas complejas y específicas. Al dominar las subconsultas, puedes escribir consultas más eficientes y efectivas en BigQuery. En el próximo tema, exploraremos las Expresiones de Tabla Comunes (CTEs), que son otra técnica poderosa para estructurar y simplificar consultas complejas.

Curso de BigQuery

Módulo 1: Introducción a BigQuery

Módulo 2: SQL Básico en BigQuery

Módulo 3: SQL Intermedio en BigQuery

Módulo 4: SQL Avanzado en BigQuery

Módulo 5: Gestión de Datos en BigQuery

Módulo 6: Optimización del Rendimiento de BigQuery

Módulo 7: Seguridad y Cumplimiento en BigQuery

Módulo 8: Integración y Automatización de BigQuery

Módulo 9: Machine Learning en BigQuery (BQML)

Módulo 10: Casos de Uso de BigQuery en el Mundo Real

© Copyright 2026. Todos los derechos reservados