一、原题
二、题目翻译
三、题目解析
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
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的数量
下面哪一个查询给出正确结果?
要显示在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
D选项不正确,SUBSTR(TO_CHAR(promo_begin_date, 'yyyy'), 8),to_char的结果只有4个字符了,截取字符的时候,从第8位开始,明显不对,超出范围。
DECODE的用法,详见:
http://blog.csdn.net/holly2008/article/details/23140591