清风听雨 发表于 2015-11-9 09:31:23

OCP-1Z0-051-V9.02-140题

140. Examine the structure of the PRODUCTS table:
name          Null      Type
PROD_ID       NOT NULL    NUMBER(4)
PROD_NAME                VARCHAR2(20)
PROD_STATUS            VARCHAR2(6)
QTY_IN_HAND            NUMBER(8,2)
UNIT_PRICE               NUMBER(10,2)
You want to display the names of the products that have the highest total value for UNIT_PRICE *
QTY_IN_HAND.
Which SQL statement gives the required output?
A. SELECT prod_name
FROM products
WHERE (unit_price * qty_in_hand) = (SELECT MAX(unit_price * qty_in_hand)
FROM products);
B. SELECT prod_name
FROM products
WHERE (unit_price * qty_in_hand) = (SELECT MAX(unit_price * qty_in_hand)
FROM products
GROUP BY prod_name);

C. SELECT prod_name FROM products   GROUP BY prod_name
  HAVING MAX(unit_price * qty_in_hand) = (SELECT MAX(unit_price * qty_in_hand)
  FROM products
  GROUP BY prod_name);
  D. SELECT prod_name
  FROM products
  WHERE (unit_price * qty_in_hand) = (SELECT MAX(SUM(unit_price * qty_in_hand))
  FROM products)
  GROUP BY prod_name;
  Answer: A
  答案解析:
  BC都犯了一个错误,都会返回一个错误single-row subquery returns more than one row。
  即是单行子查询返回了多行。该WHERE子句包含一个等于(=) 运算符,该运算符是一个只需要一个值的单行比较运算符。=运算符无法接受子查询中的多个值,因此产生了错误。
  D的查询条件不满足题意。
         版权声明:本文为博主原创文章,未经博主允许不得转载。
页: [1]
查看完整版本: OCP-1Z0-051-V9.02-140题