OCP-1Z0-051 第149题 子查询中ALL的应用

该博客探讨了在Oracle数据库中,如何使用子查询配合ALL关键字进行查询。通过分析SQL语句,解释了查询将返回在相同时间间隔内,促销成本低于所有最高成本的产品ID。讨论了选项间的差异,并指出正确答案D的含义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、原题
View the Exhibits and examine the structures of the COSTS and PROMOTIONS tables.

Evaluate the following SQL statement:
SQL>SELECT prod_id
      FROM costs
     WHERE promo_id IN
           (SELECT promo_id
              FROM promotions
             WHERE promo_cost < ALL
             (SELECT MAX(promo_cost)
                      FROM promotions
                     GROUP BY (promo_end_date - promo_begin_date)));
What would be the outcome of the above SQL statement?
A. It displays prod IDs in the promo with the lowest cost.
B. It displays prod IDs in the promos with the lowest cost in the same time interval.
C. It displays prod IDs in the promos with the highest cost in the same time interval.
D. It displays prod IDs in the promos with cost less than the highest cost in the same time interval.

答案:D

二、题目翻译
查看COSTS and PROMOTIONS表的结构.
评估下面的SQL语句
上面SQL的执行结果什么?
A.显示promo最低的prod IDs。
B.显示相同时间段内promo最低的prod IDs。
C.显示相同时间段内promo最高的prod IDs。
D.显示相同时间段内promo的cost小于最高的cost的prod IDs。

三、题目解析
子查询
SELECT MAX(promo_cost)
  FROM promotions
 GROUP BY (promo_end_date - promo_begin_date)

求出来的,是每个促销活动期间内的最大的成本。
然后 promo_cost < ALL(.. ),表示小于 刚子查询查出来的所有这些最大成本结果集中,最小的那个。
然后,再根据活动ID,查出产品ID。

D选项中,描述也不是太准确,但是在几个选项的描述中,D是最接近的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值