组函数中的DISTINCT

        之前做题,看到后面题目不知答案为何意,于是到处寻找,终于在oracle 9i:The complete reference中找到了一节解释这个事情,还一并处理了其它几个细节,遂记录之。
 
细节1:
         组函数忽略null,例如count(column), 则计算column所以非空的行数。但count(*)并不适用,count(*)计算的是表中所有的行数,包括字段全为null的行。现在想来也是,全为null的行也是可以查到rowid的,所以也不能说是全null。

细节2:
         count()是有选项的,默认是all,distinct选项则是之计算不同的值的数量。这大概就是后面题目的正确解释了。
       

Q: 33 Examine the description of the EMPLOYEES table:
EMP_ID NUMBER(4) NOT NULL
LAST_NAME VARCHAR2(30) NOT NULL
FIRST_NAME VARCHAR2(30)
DEPT_ID NUMBER(2)
Which statement produces the number of different departments that have employees with last name
Smith?
A. SELECT COUNT(*)
FROM employees
WHERE last_name='Smith';

B. SELECT COUNT(dept_id)
FROM employees
WHERE last_name='Smith';

C. SELECT DISTINCT(COUNT(dept_id))
FROM employees
WHERE last_name='Smith';

D. SELECT COUNT(DISTINCT dept_id)
FROM employees
WHERE last_name='Smith';

E. SELECT UNIQUE(dept_id)
FROM employees
WHERE last_name='Smith';


感谢newkid的解答

:End

fj.pnglog.jpg

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21402791/viewspace-623431/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/21402791/viewspace-623431/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值