Рубрики

ВОРОТА | GATE-CS-2007 | Вопрос 61

Рассмотрим таблицу сотрудник (empId, имя, отдел, зарплата) и два запроса Q1, Q2 ниже. Предполагая, что в отделе 5 работает более одного сотрудника, и мы хотим найти сотрудников, которые получают более высокую зарплату, чем кто-либо в отделе 5, какое из утверждений является ИСТИННЫМ для любой произвольной таблицы сотрудников?

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 правильный запрос
(B) Q2 — правильный запрос
(C) Q1 и Q2 дают одинаковый ответ.
(D) Ни Q1, ни Q2 не являются правильным запросом

Ответ: (А)
Объяснение: Сначала обратите внимание, что они попросили Anyone (= All), а не Any .
Здесь каждый означает всю группу.
Любой означает всю или любую часть группы.

Пусть сотрудник (empId, имя, отдел, зарплата) имеет следующий экземпляр.

Название отдела зарплаты
————

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

Теперь фактический результат должен содержать empId: e1, e3 и e5 (потому что у них зарплата больше, чем у любого сотрудника отдела '5')

——————-
Теперь Q1:

Примечание: EXISTS (пустой набор) дает FALSE, а NOT EXISTS (пустой набор) дает TRUE.

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

Q1 приведет только к empId e1.
——————-
тогда как Q2:

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

Q2 приведет к empId e1, e3 и e5.
——————-
Следовательно, Q1 является правильным запросом.

Обратите внимание, что если мы используем ALL вместо Any во втором запросе, это будет правильно.

Вариант (А) правильный.
Тест на этот вопрос

Рекомендуемые посты:

ВОРОТА | GATE-CS-2007 | Вопрос 61

0.00 (0%) 0 votes