144. View the Exhibit and examine the structure of the PRODUCTS table.
You want to display the category with the maximum number of items.
You issue the following query:
SQL>SELECT COUNT(*),prod_category_id
FROM products
GROUP BY prod_category_id
HAVING COUNT(*) = (SELECT MAX(COUNT(*)) FROM products); 没有group by
What is the outcome?
A. It executes successfully and gives the correct output.
B. It executes successfully but does not give the correct output.
C. It generates an error because the subquery does not have a GROUP BY clause.
D. It generates an error because = is not valid and should be replaced by the IN operator.
Answer: C
答案解析:
1、首先来运行前半句,可见语法是正确的。
sh@TESTDB> SELECT COUNT(*),prod_category_id
2 FROM products
3 GROUP BY prod_category_id
4 HAVING COUNT(*)=2;
COUNT(*) PROD_CATEGORY_ID
---------- ----------------
2 202
2、再来运行子查询,报错,缺少group by函数。故选C,子查询缺少group by函数。
sh@TESTDB> SELECT MAX(COUNT(*)) FROM products;
SELECT MAX(COUNT(*)) FROM products
*
ERROR at line 1:
ORA-00978: nested group function without GROUP BY