Introducción


En esta sección, aprenderemos acerca de dos herramientas útiles en SQL que nos permiten crear consultas más complejas y flexibles: subconsultas y Expresiones de Tablas Comunes (CTE, por sus siglas en inglés).

Piensa en las subconsultas como pequeñas consultas dentro de consultas más grandes, las cuales nos ayudan a encontrar los datos que necesitamos.

Por otro lado, las CTE son como una memoria a corto plazo para tu código SQL. Almacenan resultados que podemos utilizar nuevamente en nuestras consultas, lo que nos ayuda a mantener nuestro código simple y eficiente.

Estos conceptos pueden parecer un poco complicados al principio. ¡Y eso está completamente bien! Incluso los usuarios más experimentados de SQL tuvieron que empezar desde algún lugar, y no entendieron todo de inmediato. Es como aprender a andar en bicicleta, al principio puede parecer difícil, pero con práctica se vuelve algo natural.

Así que no te desanimes si no lo entiendes en el primer intento. Sigue intentando, sigue practicando y poco a poco comenzará a tener sentido.

Subconsultas (Subqueries)

Como se mencionó en la introducción, las subconsultas son como una pregunta dentro de otra pregunta, también conocida como consulta anidada o consulta interna. Nos permiten recopilar, filtrar y cambiar datos en múltiples capas, todo dentro de un solo comando.

Puedes utilizar subconsultas en diferentes partes de un comando SQL. Esto incluye la parte SELECT (qué datos mostrar), la parte FROM (de qué tablas obtener datos), la parte WHERE (qué condiciones deben cumplir los datos) y la parte HAVING (qué condiciones deben cumplir los grupos de datos).

Subconsultas Escalar (Scalar Subquery)


Una subconsulta escalar es un tipo de subconsulta que devuelve solo una pieza de información. Puedes usarla en diferentes partes de un comando SQL, como SELECT, WHERE y HAVING. Por lo general, utilizarás este tipo de subconsulta cuando necesites seleccionar o calcular cosas basadas en una única pieza de datos de otra tabla.

Ejemplo:

SELECT first_name, last_name, salary
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);

En este ejemplo, la subconsulta encuentra el salario promedio de todos los empleados. La consulta principal luego encuentra los empleados cuyos salarios son mayores que este salario promedio. En otras palabras, te muestra quiénes ganan más que el promedio.

Vista en Línea (Inline Views)


Las vistas en línea (inline views) son un tipo de subconsulta que se coloca en la parte FROM de tu instrucción SQL. Son como la creación de una mini tabla temporal que puedes usar en tu pregunta principal.