OCP-1Z0-051 第101题 DECODE,COUNT,CASE WHEN,SUM的使用

一、原题
Examine the data in the PROMO_BEGIN_DATE column of the PROMOTIONS table:
PROMO_BEGIN _DATE
04-jan-00
10-jan-00
15-dec-99
18-oct-98
22-aug-99
You want to display the number of promotions started in 1999 and 2000.
Which query gives the correct output?
A.SELECT SUM(DECODE(SUBSTR(promo_begin_date, 8), '00', 1, 0)) "2000",
         SUM(DECODE(SUBSTR(promo_begin_date, 8), '99', 1, 0)) "1999"
    FROM promotions;

B. SELECT SUM(CASE TO_CHAR(promo_begin_date, 'yyyy')
             WHEN '99' THEN
              1
             ELSE
              0
           END) "1999",
       SUM(CASE TO_CHAR(promo_begin_date, 'yyyy')
             WHEN '00' THEN
              1
             ELSE
              0
           END) "2000"
  FROM promotions;

C.
SELECT COUNT(CASE TO_CHAR(promo_begin_date, 'yyyy')
                WHEN '99' THEN
                 1
                ELSE
                 0
               END) "1999",
          COUNT(CASE TO_CHAR(promo_begin_date, 'yyyy')
                 WHEN '00' THEN
                  1
                 ELSE
                  0
               END) "2000"
   FROM promotions;

D.SELECT COUNT(DECODE(SUBSTR(TO_CHAR(promo_begin_date, 'yyyy'), 8),
                    '1999',
                    1,
                    0)) "1999",
          COUNT(DECODE(SUBSTR(TO_CHAR(promo_begin_date, 'yyyy'), 8),
                    '2000',
                    1,
                    0)) "2000"
    FROM promotions;

答案:A

二、题目翻译
查看PROMOTIONS表中PROMO_BEGIN_DATE列的数据
要显示在1999 和2000年开始的promotions的数量
下面哪一个查询给出正确结果?

三、题目解析
B和C选项不正确,TO_CHAR(promo_begin_date, 'yyyy')这个结果就是年显示成四位,但和后面的'00'比较,肯定比对不上。
D选项不正确,SUBSTR(TO_CHAR(promo_begin_date, 'yyyy'), 8),to_char的结果只有4个字符了,截取字符的时候,从第8位开始,明显不对,超出范围。

DECODE的用法,详见:
          http://blog.csdn.net/holly2008/article/details/23140591

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值