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
- Subconsulta: Una consulta dentro de otra consulta.
- Consulta externa: La consulta principal que contiene la subconsulta.
- Subconsulta escalar: Devuelve un solo valor.
- Subconsulta de fila: Devuelve una sola fila con múltiples columnas.
- 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
- ¿Qué es BigQuery?
- Configuración de tu Entorno de BigQuery
- Entendiendo la Arquitectura de BigQuery
- Visión General de la Consola de BigQuery
Módulo 2: SQL Básico en BigQuery
Módulo 3: SQL Intermedio en BigQuery
Módulo 4: SQL Avanzado en BigQuery
- Joins Avanzados
- Campos Anidados y Repetidos
- Funciones Definidas por el Usuario (UDFs)
- Particionamiento y Agrupamiento
Módulo 5: Gestión de Datos en BigQuery
- Cargando Datos en BigQuery
- Exportando Datos desde BigQuery
- Transformación y Limpieza de Datos
- Gestión de Conjuntos de Datos y Tablas
Módulo 6: Optimización del Rendimiento de BigQuery
- Técnicas de Optimización de Consultas
- Entendiendo los Planes de Ejecución de Consultas
- Uso de Vistas Materializadas
- Optimización del Almacenamiento
Módulo 7: Seguridad y Cumplimiento en BigQuery
- Control de Acceso y Permisos
- Encriptación de Datos
- Auditoría y Monitoreo
- Cumplimiento y Mejores Prácticas
Módulo 8: Integración y Automatización de BigQuery
- Integración con Servicios de Google Cloud
- Uso de BigQuery con Dataflow
- Automatización de Flujos de Trabajo con Cloud Functions
- Programación de Consultas con Cloud Scheduler
Módulo 9: Machine Learning en BigQuery (BQML)
- Introducción a BigQuery ML
- Creación y Entrenamiento de Modelos
- Evaluación y Predicción con Modelos
- Características Avanzadas de BQML
