Menu
Coddy logo textTech

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:

  1. Subconsultas escalares - Devuelve un solo valor (una fila, una columna)
  2. Subconsultas de fila - Devuelve una sola fila con múltiples columnas
  3. 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
challenge icon

Desafío

Fácil

Tablas 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:

  1. Primero, escribe una subconsulta que calcule el promedio de todas las cantidades en la tienda: SELECT AVG(quantity) FROM shop
  2. 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:

  1. Subconsultas escalares - Devuelve un solo valor (una fila, una columna)
  2. Subconsultas de fila - Devuelve una sola fila con múltiples columnas
  3. 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

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos