Which query would give the correct output?

View the Exhibit and examine the structure of the PRODUCTS tables.
You want to generate a report that displays the average list price of product categories where the average list
price is less than half the maximum in each category.
Which query would give the correct output?

View the Exhibit and examine the structure of the PRODUCTS tables.
You want to generate a report that displays the average list price of product categories where the average list
price is less than half the maximum in each category.
Which query would give the correct output?

A.
SELECT prod_category, avg(prod_list_price)
FROM products
GROUP BY prod_category
HAVING avg(prod_list_price) < ALL
(SELECT max(prod_list_price)/2
FROM products
GROUP BY prod_category);

B.
SELECT prod_category, avg(prod_list_price)
FROM products
GROUP BY prod_category
HAVING avg(prod_list_price) > ANY
(SELECT max(prod_list_price)/2
FROM products
GROUP BY prod_category);

C.
SELECT prod_category, avg(prod_list_price)
FROM products
HAVING avg(prod_list_price) < ALL
(SELECT max(prod_list_price)/2
FROM products
GROUP BY prod_category);

D.
SELECT prod_category, avg(prod_list_price)
FROM products
GROUP BY prod_category
HAVING avg(prod_list_price) > ANY
(SELECT max(prod_list_price)/2
FROM products);

Explanation:
Using the ANY Operator in Multiple-Row Subqueries
The ANY operator (and its synonym, the SOME operator) compares a value to each value returned by a
subquery.
<ANY means less than the maximum.
>ANY means more than the minimum.
=ANY is equivalent to IN
Using the ALL Operator in Multiple-Row Subqueries
The ALL operator compares a value to every value returned by a subquery.
>ALL means more than the maximum and
<ALL means less than the minimum.
The NOT operator can be used with IN, ANY, and ALL operators.



Leave a Reply 2

Your email address will not be published. Required fields are marked *


Hola

Hola

A
“Sayed
September 7, 2015 at 10:58 pm

Answer is A not C. The outer SELECT has aggregate function AVG needs a GROUP BY clause which is written before HAVING clause. The sub-query aggregate function MAX also needs a GROUP BY clause and it is written within parenthesis. If the column names are placed in SELECT statement (SELECT prod_catagory, ….) then GROUP BY clause must use this/these column to satisfy the aggregate function like AVG/MAX. If no column except aggregate functions are present in SELECT statement then any column(s) can be used in GROUP BY clause.”

https://equizzing.com/oracle/which-query-would-give-the-correct-output/

Michael

Michael

No correct answer among A-D. I guess in D, there is typo. If it is “<ANY(SELECT …)", D would be correct answer.