OCP 1Z0 051 99

99. View the Exhibit and examine the structure of the PROMOTIONS table. 
Using  the PROMOTIONS  table,   you  need  to  find  out  the  average  cost  for  all  promos  in  the  ranges 
$0-2000 and $2000-5000 in category A 
You   issue the following SQL statement:    
SQL>SELECT AVG(CASE         
WHEN promo_cost BETWEEN 0 AND 2000 AND promo_category='A'              
then promo_cost               
ELSE null END) "CAT_2000A",            
AVG(CASE                
WHEN promo_cost BETWEEN 2001 AND 5000 AND promo_category='A'                    
THEN promo_cost               
ELSE null END) "CAT_5000A"     
FROM promotions; 
What would be the outcome?  

A. It executes successfully and gives the required result. 
B. It generates an error because NULL cannot be specified as a return value. 
C. It generates an error because CASE cannot be used with group functions.  
D. It generates an error because multiple conditions cannot be specified for the WHEN clause. 

聚合函数忽略空行,所以语句中avg分别对应各自的范围求值

SQL> /*库中promo_category没有“A”值,我们改用“TV”代替*/
  2  SELECT AVG(CASE
  3               WHEN promo_cost BETWEEN 0 AND 2000 AND promo_category = 'TV' THEN
  4                promo_cost
  5               ELSE
  6                NULL
  7             END) "CAT_2000A",
  8         AVG(CASE
  9               WHEN promo_cost BETWEEN 2001 AND 5000 AND promo_category = 'TV' THEN
 10                promo_cost
 11               ELSE
 12                NULL
 13             END) "CAT_5000A"
 14    FROM sh.promotions;
 CAT_2000A  CAT_5000A
---------- ----------
      1300       3950
1 row selected

SQL> SELECT COUNT(*) AS ct1,
  2         COUNT(CASE
  3                 WHEN promo_cost BETWEEN 0 AND 5000 AND promo_category = 'TV' THEN
  4                  promo_cost
  5                 ELSE
  6                  NULL
  7               END) AS ct2,
  8         COUNT(CASE
  9                 WHEN promo_cost BETWEEN 0 AND 2000 AND promo_category = 'TV' THEN
 10                  promo_cost
 11                 ELSE
 12                  NULL
 13               END) "CAT_2000A",
 14         COUNT(CASE
 15                 WHEN promo_cost BETWEEN 2001 AND 5000 AND promo_category = 'TV' THEN
 16                  promo_cost
 17                 ELSE
 18                  NULL
 19               END) "CAT_5000A"
 20    FROM sh.promotions;
       CT1        CT2  CAT_2000A  CAT_5000A
---------- ---------- ---------- ----------
       503          4          2          2
1 row selected

SQL> SELECT AVG(promo_cost) AS av
  2    FROM sh.promotions
  3   WHERE promo_cost BETWEEN 0 AND 2000
  4     AND promo_category = 'TV';
        AV
----------
      1300
1 row selected

SQL> 
SQL> SELECT AVG(promo_cost) AS av
  2    FROM sh.promotions
  3   WHERE promo_cost BETWEEN 2001 AND 5000
  4     AND promo_category = 'TV';
        AV
----------
      3950
1 row selected

Answer: A 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值