Databases

T01-011-01 Subconsultas

Enunciado

Las subconsultas puede aparecer dentro de las cláusulas WHERE, HAVING o FROM.

Comenzaremos por las

Subconsultas en la cláusula WHERE
que devuelven valores únicos.

Sintaxis

SELECT [atributos]
FROM [tabla]
WHERE expresión operador (

    SELECT [atributos]
    FROM [tabla]
    WHERE [condición]

)

Lo que hemos puesto en negrita correspondería a la subconsulta.

Ejemplo:

Si preguntáramos, ¿qué empleados trabajan en el mismo departamento en el que trabaja Fripp? la mayoría, antes de responder, preguntaría a su vez ¿y en qué departamento trabaja Fripp?

Esta última pregunta sería nuestra subconsulta:

SELECT DEPARTMENT_ID
FROM HR.employees
WHERE LAST_NAME = 'Fripp'

DEPARTMENT_ID
50

Es importante que, de todos los datos de Fripp, únicamente nos interesa el valor del atributo DEPARTMENT_ID.

Una vez que conocemos en qué departamento trabaja Fripp, ya podríamos consultar los empleados que trabajan en ese departamento:

SELECT FIRST_NAME, LAST_NAME, DEPARTMENT_ID
FROM HR.employees
WHERE DEPARTMENT_ID = 50

FIRST_NAME LAST_NAME DEPARTMENT_ID
Mozhe Atkinson 50
Sarah Bell 50
Laura Bissot 50
... ... ...

Pero, podríamos haber realizado las 2 consultas anteriores a la vez, sustituyendo el número 50 de la segunda consulta por la primera consulta encerrada entre paréntesis.

SELECT FIRST_NAME, LAST_NAME, DEPARTMENT_ID
FROM HR.employees
WHERE DEPARTMENT_ID = (
    SELECT DEPARTMENT_ID
    FROM HR.employees
    WHERE LAST_NAME = 'Fripp'
)

La anterior es un ejemplo de subconsulta de devolución de valores individuales, ya que devuelve un único valor (50), que posteriormente es utulizado por la consulta externa a través de los operadores relacionales (=, >, <, !=).

Ejercicio:

¿Qué empleados tienen un salario mayor que el doble de la media de los salarios?

Ordena el resultado descendentemente por el salario.

Tipo

SELECT

Solución


												
SELECT FIRST_NAME, LAST_NAME, SALARY FROM HR.employees WHERE SALARY > 2 * ( SELECT AVG(SALARY) FROM HR.employees ) ORDER BY SALARY DESC

Prueba


											

Librerías (Onfly databases)