Рубрики

ВОРОТА | GATE-CS-2006 | Вопрос 67

Рассмотрим учетную запись отношения (клиент, баланс), где клиент является первичным ключом, а нулевые значения отсутствуют. Мы хотели бы ранжировать клиентов по убыванию баланса. Клиент с наибольшим балансом получает ранг 1

Query1:
  select A.customer, count(B.customer)
  from account A, account B
  where A.balance <=B.balance
  group by A.customer

Query2:
  select A.customer, 1+count(B.customer)
  from account A, account B
  where A.balance < B.balance
  group by A.customer 

Рассмотрим эти утверждения о Query1 и Query2.

1. Query1 will produce the same row set as Query2 for 
   some but not all databases.
2. Both Query1 and Query2 are correct implementation 
   of the specification
3. Query1 is a correct implementation of the specification
   but Query2 is not
4. Neither Query1 nor Query2 is a correct implementation
   of the specification
5. Assigning rank with a pure relational query takes 
   less time than scanning in decreasing balance order 
   assigning ranks using ODBC. 

Какие два из приведенных выше утверждений являются правильными?
(А) 2 и 5
(Б) 1 и 3
(С) 1 и 4
(D) 3 и 5

Ответ: (с)
Объяснение: Запрос 1 и Запрос 2 дадут одинаковый результат, если все клиенты имеют разный баланс. Таким образом, для некоторых баз данных результат запроса 1 и запроса 2 будет одинаковым.

Теперь давайте рассмотрим тот факт, что все записи в базе данных имеют одинаковое значение для баланса. В идеале все клиенты должны иметь ранг 1, но оба запроса дают всем клиентам ранг, равный количеству клиентов в базе данных.
Таким образом, оба запроса не дают нам требуемого результата.

Таким образом, C является правильным выбором.

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

ВОРОТА | GATE-CS-2006 | Вопрос 67

0.00 (0%) 0 votes