zoukankan      html  css  js  c++  java
  • AVG()和to_date()函数的使用

    1.一道关于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    

    2. oracle to_date()比较的怪异问题select case when to_date('2013','yyyy')>to_date('20130801','yyyymmdd') then 'true' else 'false' end  from dual
    结果 true
    select case when to_date('2013','yyyy')>to_date('20130901','yyyymmdd') then 'true' else 'false' end  from dual
    结果 false
    有人知道原因不?

    select to_date('2013', 'yyyy') from dual;查询出来的结果 2013-09-01
    to_date('2013','yyyy')>to_date('20130801','yyyymmdd')这个条件满足,所以为true,
    to_date('2013','yyyy')>to_date('20130901','yyyymmdd')这里结果为相等,所以结果为false.
    如果改为to_date('2013','yyyy')>=to_date('20130901','yyyymmdd')结果就为true

     注: to_date(‘年’,’yyyy’)每年的第一天,  现在 看来取的是年份以及 当前月的第一天

  • 相关阅读:
    第03次作业-栈和队列
    第02次作业-线性表
    Data-Structure01-绪论
    c语言第二次实验报告
    C语言第一次实验报告
    KD-tree讲解
    AAAA、
    清北学堂 day one
    生长,开始记录!
    Linux命令(待完善)
  • 原文地址:https://www.cnblogs.com/zuo-zijing/p/3964601.html
Copyright © 2011-2022 走看看