一道关于AVG函数和NULL值的面试题

一道关于AVG函数和NULL值的面试题


某部门有10个员工,其中9个工资为1000,另一个为NULL,当使用AVG函数取该部门平均工资时,结果应该是多少?
A.1000
B.900


我这里把题目再延伸一下,如果我们count(工资)结果是多少? A.10, B.9


实践出真知
SQL> select * from v$version;

BANNER
-------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
PL/SQL Release 11.1.0.7.0 - Production
CORE    11.1.0.7.0      Production
TNS for Linux: Version 11.1.0.7.0 - Production
NLSRTL Version 11.1.0.7.0 - Production

SQL>
SQL> drop table t purge;

Table dropped.

SQL> create table t(sal number);

Table created.

SQL> insert into t values (10);

1 row created.

SQL> insert into t values ('');

1 row created.

SQL> insert into t values(0);

1 row created.

SQL> commit;

Commit complete.

SQL> select * from t;

       SAL
----------
        10

         0

SQL> desc t
 Name                                      Null?    Type
 ----------------------------------------- -------- -------------------------
 SAL                                                NUMBER

SQL> select count(*),count(sal),sum(sal),avg(sal) from t;

  COUNT(*) COUNT(SAL)   SUM(SAL)   AVG(SAL)
---------- ---------- ---------- ----------
         3          2         10          5

SQL>


可以看到count(sal)和avg(sal)都是直接把字段为NULL的行排除了,答对了吗? :-)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值