edited by
57,150 views
91 91 votes

Which of the following statements are TRUE about an SQL query?
P : An SQL query can contain a HAVING clause even if it does not have a GROUP BY clause
Q : An SQL query can contain a HAVING clause only if it has a GROUP BY clause
R : All attributes used in the GROUP BY clause must appear in the SELECT clause
S : Not all attributes used in the GROUP BY clause need to appear in the SELECT clause

  1. P and R
  2. P and S
  3. Q and R
  4. Q and S

8 Answers

0 0 votes

Answer (C) 
According to standard SQL answer should be option (C) which is answer key given by GATE authority. 

If we talk about different SQL implementations like MySQL, then option (B) is also right. But in question they seem to be talking about standard SQL not about implementation. For example below is a 

P is correct in most of the implementations. HAVING clause can also be used with aggregate function. If we use a HAVING clause without a GROUP BY clause, the HAVING condition applies to all rows that satisfy the search condition. In other words, all rows that satisfy the search condition make up a single group. See this for more details. 

S is correct . To verify S, try following queries in SQL. 
 

CREATE TABLE temp 
  ( 
     id   INT, 
     name VARCHAR(100) 
  ); 

INSERT INTO temp VALUES (1, "abc"); 
INSERT INTO temp VALUES (2, "abc"); 
INSERT INTO temp VALUES (3, "bcd"); 
INSERT INTO temp VALUES (4, "cde"); 

SELECT Count(*) 
FROM   temp 
GROUP  BY name; 

Output: 

count(*)
--------
2
1
1

Alternative way – 

Statement (P) “An SQL query can contain a HAVING clause even if it does not have a GROUP BY clause” is correct because Having caluse is applied after the aggregation phase and must be used if you want to filter aggregate results and Having doesn’t require Group By clause. A HAVING clause without a GROUP BY clause is valid and (arguably) useful syntax in Standard SQL. Consider this example, which is valid Standard SQL: 
 

SELECT 'T' AS result
FROM Book
HAVING MIN(NumberOfPages) < MAX(NumberOfPages);

Statement (S) “Not all attributes used in the GROUP BY clause need to appear in the SELECT clause” is correct but if we use Group By clause must, there are limitations on what we can put into the Select clause. 

0 0 votes
Don't attributes generally mean unaggregated + aggregated, then just the unaggregated must appear again and the aggregated need not, so Option C I believe by definition is not correct
Answer:
Position:
Show:

Related questions

69 69 votes
5 answers 5 answers
23.1k
23.1k views
go_editor asked Apr 21, 2016
23,105 views
Consider the following relations $A, B$ and $C:$ $$\overset{\textbf{A}}{\begin{array}{|c|c|c|}\hline\\\textbf{Id}& \textbf{Name}& \textbf{Age} \\\hline12& \text{A...
89 89 votes
9 answers 9 answers
34.1k
34.1k views
gatecse asked Aug 5, 2014
34,091 views
Which of the following is TRUE?Every relation in $\text{3NF}$ is also in $\text{BCNF}$A relation $\text{R}$ is in $\text{3NF}$ if every non-prime attribute of $\text{R}$ ...
6 6 votes
4 4 answers
6.7k
6.7k views
go_editor asked Jun 17, 2016
6,727 views
Consider the following relational query on the above database:SELECT S.name FROM Suppliers S Where S.sid NOT IN (SELECT C.sid FROM Catalog C WHERE C.pid NOT IN (SELECT P....
15 15 votes
4 answers 4 answers
4.8k
4.8k views
gatecse asked Sep 29, 2014
4,838 views
Given the sequence of terms, $\text{AD CG FK JP}$, the next term is$\text{OV}$$\text{OW}$$\text{PV}$$\text{PW}$