Рубрики

ВОРОТА | GATE-CS-2015 (Mock Test) | Вопрос 13

Рассмотрим следующую таблицу сотрудников

ID   salary   DeptName
1    10000      EC
2    40000      EC
3    30000      CS
4    40000      ME
5    50000      ME
6    60000      ME 
7    70000      CS 

Сколько строк в результате следующего запроса?

SELECT E.ID
FROM  Employee E
WHERE  EXISTS  (SELECT E2.salary
               FROM Employee E2
               WHERE E2.DeptName = 'CS'
               AND   E.salary > E2.salary)

(А) 0
(Б) 4
(С) 5
(D) 6

Ответ: (с)
Пояснение: Фон:

  1. WHERE EXISTS проверяет наличие любых записей в подзапросе.
  2. EXISTS возвращает true, если подзапрос возвращает одну или несколько записей.
  3. EXISTS обычно используется с коррелированными подзапросами.

Здесь в вышеупомянутом вопросе есть коррелированный подзапрос, потому что подзапрос ссылается на включающий запрос (отношение Employee переименовано в E)
Подзапрос ( ВЫБЕРИТЕ E2. Салар. ОТ сотрудника E2
ГДЕ E2.DeptName = 'CS')
Отфильтровывает отношение E2 как (все кортежи, где DeptName — CS и соответствующие зарплаты)

Теперь коррелированный запрос работает следующим образом:

ВЫБЕРИТЕ Э.ИД
ОТ сотрудника Е
ГДЕ СУЩЕСТВУЕТ (ВЫБЕРИТЕ Е2. ЗАРАБОТАТЬ
ОТ СОТРУДНИКА Е2
ГДЕ E2.DeptName = 'CS'
AND E.salary> E2.salary)

Он берет один кортеж из Employee Relation и отображает его идентификатор, если WHERE EXISTS возвращает true, то есть подзапрос возвращает одну или несколько записей. Это происходит в том случае, когда кортеж из отношения сотрудников E имеет значение атрибута зарплаты больше, чем любое из значений атрибута зарплаты, отфильтрованных выше.
Таким образом, отфильтрованные кортежи будут всеми кортежами, у которых значение атрибута зарплаты больше, чем значения зарплаты хотя бы одного из отношения E2 (3000 и 7000).

ID зарплаты DeptName
2 40000 EC
4 40000 МЕ
5 50000 ME
6 60000 ME
7 70000 CS

Наконец, он отображает их идентификаторы, и результат будет:
2
4
5
6
7

Отсюда вариант (с) 5 строк.

Это решение предоставлено Яшикой Арора .
Тест на этот вопрос

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

ВОРОТА | GATE-CS-2015 (Mock Test) | Вопрос 13

0.00 (0%) 0 votes