Subqueries Part 2
Parte de la sección Fundamentos del Journey de SQL de Coddy — lección 39 de 72.
Hay tres tipos principales de subconsultas:
- Subconsultas escalares - Devuelve un solo valor (una fila, una columna)
- Subconsultas de fila - Devuelve una sola fila con múltiples columnas
- Subconsultas de tabla - Devuelve múltiples filas y columnas
Por ejemplo, aquí hay algunos casos de uso para cada tipo de subconsulta:
Subconsulta escalar - Encuentra empleados que ganan más que el salario promedio:
SELECT name, salary
FROM employees
WHERE salary > (
SELECT AVG(salary)
FROM employees
);Subconsulta de fila - Encuentra empleado(s) con el mismo departamento y salario que Alice
SELECT name
FROM employees
WHERE (department, salary) = (
SELECT department, salary
FROM employees
WHERE name = 'Alice'
);Subconsultas de tabla - Mostrar departamentos y su conteo de empleados
SELECT department, count
FROM (
SELECT department, COUNT(*) as count
FROM employees
GROUP BY department
) as dept_counts;Nota los casos de uso:
- Escalar - Comparaciones simples (>, <, =)
- Cuando necesites hacer coincidir múltiples columnas
- Cuando necesites consultar desde un conjunto de resultados
Desafío
FácilTablas y columnas disponibles:
shop:price,quantity,category,list_date
Encuentra las categorías donde su cantidad total es mayor que el promedio de todas las cantidades en la tienda.
Importante: Debes usar una subconsulta dentro de la cláusula HAVING para calcular el promedio. No uses un valor hardcodeado ni una consulta separada — la subconsulta debe calcular AVG(quantity) de la tabla shop directamente dentro de HAVING.
Pasos para resolver:
- Primero, escribe una subconsulta que calcule el promedio de todas las cantidades en la tienda:
SELECT AVG(quantity) FROM shop - Luego, para cada categoría, suma sus cantidades y compáralas con esta subconsulta usando la palabra clave
HAVING
Hoja de referencia
Hay tres tipos principales de subconsultas:
- Subconsultas escalares - Devuelve un solo valor (una fila, una columna)
- Subconsultas de fila - Devuelve una sola fila con múltiples columnas
- Subconsultas de tabla - Devuelve múltiples filas y columnas
Subconsulta escalar - Comparaciones simples (>, <, =):
SELECT name, salary
FROM employees
WHERE salary > (
SELECT AVG(salary)
FROM employees
);Subconsulta de fila - Coincide múltiples columnas:
SELECT name
FROM employees
WHERE (department, salary) = (
SELECT department, salary
FROM employees
WHERE name = 'Alice'
);Subconsulta de tabla - Consulta desde un conjunto de resultados:
SELECT department, count
FROM (
SELECT department, COUNT(*) as count
FROM employees
GROUP BY department
) as dept_counts;Pruébalo tú mismo
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4More Keywords
The IN keywordThe BETWEEN keywordThe LIKE keywordThe AS keywordRecap - Cellphone Models2Conditions
Conditions BasicsThe AND keywordThe OR keywordThe NOT keywordMultiple Conditions CombinedParenthesisBooleans5Arithmetic Operations
Mathematical OperatorsMathematical ColumnsThe Modulo OperationThe ROUND() Function3Specific Return Format
Null valuesSort Results Part 1Sort Results Part 2Recap - Cyber Security FirmLimit number of recordsRecap - Vehicle Factory6Intro Challenges
Recap - Parliamentary ElectionRecap - Police Criminal ArrestRecap - Bar Beverage ContainerRecap - Engineer new columns