A very exhaustive gate question on SQL Query


#1

Consider the relation account (customer, balance) where customer is a primary key and there are no null values. We would like to rank customers according to decreasing balance. The customer with the largest balance gets rank 1. ties are not broke but ranks are skipped: if exactly two customers have the largest balance they each get rank 1 and rank 2 is not assigned

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

Consider these statements about Query1 and 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.

Which two of the above statements are correct?

a) 2 and 5
b) 1 and 3
c) 1 and 4
d) 3 and 5


#2

I think answer is d) 3 and 5 .
Query 2 is wrong because we cant sum in select variables


#3

Option D is correct.
Query 1 is appropriate . Query 2 will not give correct output because the equal rank condition will not be fulfilled. 1+count gives no sense.