📜  门| GATE-CS-2006 |第 67 题

📅  最后修改于: 2021-09-24 05:05:57             🧑  作者: Mango

考虑客户是主键并且没有空值的关系帐户(客户,余额)。我们想根据余额递减对客户进行排名。余额最大的客户获得第 1 级。没有打破平局,但会跳过等级:如果正好有两个客户的余额最大,则他们每个人都获得第 1 级,而不会分配第 2 级

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
(B) 1 和 3
(C) 1 和 4
(D) 3 和 5答案: (C)
说明:如果所有客户都有不同的余额,则查询 1 和查询 2 将给出相同的结果。因此,对于某些数据库,查询 1 和查询 2 的结果将相同。
现在,让我们考虑一个事实,即数据库中的所有条目都具有相同的余额值。理想情况下,所有客户的排名都应为 1,但两个查询都会为所有客户提供与数据库中客户数量相等的排名。
因此,这两个查询都没有给我们所需的输出。
因此,C 是正确的选择。

如果您发现上面的帖子有任何错误,请在下面发表评论。
这个问题的测验