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’)每年的第一天, 现在 看来取的是年份以及 当前月的第一天
AVG()和to_date()函数的使用的更多相关文章
- Oracle to_date()函数的用法
Oracle to_date()函数的用法 to_date()是Oracle数据库函数的代表函数之一,下文对Oracle to_date()函数的几种用法作了详细的介绍说明,供您参考学习. 在Orac ...
- greenplum中to_date函数注意点
今天协助排查异常数据,发现是如下类似代码产生的: to_date(col_name,'yyyymmdd'),其中col_name是date类型. 这个代码运行后,结果是:2018-11-16的date ...
- Oracle to_date()函数的用法介绍
to_date()是Oracle数据库函数的代表函数之一,下文对Oracle to_date()函数的几种用法作了详细的介绍说明,需要的朋友可以参考下 在Oracle数据库中,Oracle t ...
- Oracle to_char()和to_date()函数的用法
to_char()函数是我们经常使用的函数,下面就为您详细介绍Oracle to_date()函数的用法 1.to_char()函数分析 1)SQL中不区分大小写,MM和mm被认为是相同的格式代码 先 ...
- Oracle to_date()函数的用法《转载》
to_date()是Oracle数据库函数的代表函数之一,下文对Oracle to_date()函数的几种用法作了详细的介绍说明, 原文地址:http://database.51cto.com/art ...
- oracle to_date函数和mysql DATE_FORMAT函数用法
一.在Oracle中,当想把字符串为‘2011-09-20 08:30:45’的格式转化为日期格式,我们可以使用oracle提供的to_date函数. sql语句为: SELECT to_date(' ...
- To_Date函数用法
spl> select * from emp where dates between to_date('2007-06-12 10:00:0 ...
- Oracle数据库to_date函数注意事项
使用PL/SQL连接到Oracle数据库服务器,执行一条update语句: update pjnl set transtime = to_date('2015-05-14 12:13:20','yyy ...
- mysql类似to_char()to_date()函数mysql日期和字符相互转换方法date_f
mysql 类似to_char() to_date()函数mysql日期和字符相互转换方法 date_format(date,'%Y-%m-%d') -------------->oracle中 ...
随机推荐
- 一道简单的动态规划题目——House Robber
一.题目 House Robber(一道Leetcode上的关于动态规划的简单题目)具体描述如下: There is a professional robber planning to rob hou ...
- oracle-同义词Synonyms + 用户访问控制(grant 和 revoke)
同义词(Synonyms) 创建同义词: 语法 CREATE [PUBLIC] SYNONYM synonym FOR object; CREATE SYNONYM ...
- ShowModal在FireMonkey移动应用程序对话框
This is the only code that changes between the first and second code snippets: dlg.ShowModal(procedu ...
- ARM嵌入式整理
填空 1指令含义 列出文件列表的ls命令 切换目录的cd命令 创建目录的mkdir命令 删除目录的rmdir命令 复制文件的cp命令 删除文件或目录的rm命令 让显示画面暂停的more命令 连接文件的 ...
- hdu 3234 并查集
虚拟一个根节点n,设其值为0.并且始终保持其为根. #include<map> #include<set> #include<cmath> #include< ...
- 2000 Asia shanghai Dance Dance Revolution
思路:dp[i][x][y]表示第i个序列中,右脚在x位置,左脚在y位置时,其最小花费. 那么dp[i][x][y]=min(dp[i-1][a[i]][y]+cost[a[i]][x],dp[i-1 ...
- C/C++程序通过动态链接库调用MATLAB程序
C/C++程序通过动态链接库调用MATLAB程序 1 MATLAB编译器设置 需要设定对应的C++编译器才能编译.m文件生成可供C++调用的库文件. 在MATLAB命令行输入:mex –setup:然 ...
- 转: 通过不到100行Go代码打造你自己的容器
备注:这个文章讲容器,讲的比较的浅显易懂.推荐,前期入行者看. 转: http://www.infoq.com/cn/articles/build-a-container-golang?utm_sou ...
- java学习系列(一)Java中的IO操作
Java的IO流是实现输入/输出的基础,它可以方便地实现数据的输入\输出操作,在Java中把不同的输入\输出源抽象为"流",通过流的方式允许Java程序使用相同的方式来访问不同的输 ...
- .NET打印功能实现 PrintDocument
//打印按钮 private void btnPrint_Click(object sender, EventArgs e) { if (this.printDialog1.ShowDialog() ...