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