PUERTA | PUERTA-CS-2007 | Pregunta 61

Considere la tabla empleado (empId, nombre, departamento, salario) y las dos consultas Q1, Q2 a continuación. Suponiendo que el departamento 5 tiene más de un empleado, y queremos encontrar los empleados que obtienen un salario más alto que cualquiera en el departamento 5, ¿cuál de las afirmaciones es VERDADERA para cualquier tabla de empleados arbitraria?

Q1 : Select e.empId
     From employee e
     Where not exists
        (Select * From employee s where s.department = “5” and 
                                        s.salary >=e.salary)
Q2 : Select e.empId
     From employee e
     Where e.salary > Any
    (Select distinct salary From employee s Where s.department = “5”)

(A) Q1 es la consulta correcta
(B) Q2 es la consulta correcta
(C) Tanto Q1 como Q2 producen la misma respuesta.
(D) Ni Q1 ni Q2 son la consulta correcta

Respuesta: (A)
Explicación: Primero tenga en cuenta que preguntaron por Cualquiera (= Todos) no por Cualquiera
Aquí, Todos significa todo el grupo. 
Cualquiera significa todo o cualquier parte del grupo. 

Deje que el empleado (empId, nombre, departamento, salario) tenga la siguiente instancia. 

empId nombre departamento salario 
———————————-

e1 ------- A-------- 1---------10000
e2 -------B ------- 5 ---------5000
e3 -------C ------- 5----------7000
e4 -------D ------- 2----------2000
e5 -------E ------- 3----------6000

Ahora el resultado real debe contener empId: e1, e3 y e5 (porque tienen un salario mayor que cualquier empleado en el departamento ‘5’) 

——————————————————– 
Ahora P1: 

Nota: EXISTE (conjunto vacío) da FALSO y NO EXISTE (conjunto vacío) da VERDADERO. 
 

Select e.empId
From employee e
Where not exists
(Select * From employee s where s.department = “5” and
s.salary >=e.salary)

Q1 dará como resultado solo empId e1. 
——————————————————— 
mientras que Q2: 
 

Select e.empId
From employee e
Where e.salary > Any
(Select distinct salary From employee s Where s.department = “5”)

Q2 dará como resultado empId e1, e3 y e5. 
——————————————————– 
Por lo tanto, Q1 es la consulta correcta. 

Tenga en cuenta que si usamos ALL en lugar de Any en la segunda consulta, esto será correcto. 

La opción (A) es correcta.
Cuestionario de esta pregunta

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *