oralce常用函数
1、over()不能函数不能单独使用,需要和分析函数:rank()、sum()、dense_rank()、row_number()等一起使用。
参数:over(partition by columnname1 order by columnname2)
含义:按columnname1指定的字段进行分组排序,或者说按字段columnname1的值进行分组排序。
虽然这里有分组的字眼,但是它不会像group by一样,将相同的字段变成一条字段。换句话说,这里的分组,只是将相同的字段的记录聚集在一起,
而没有减少记录。要这些记录呈现出一种怎样的状态,就看前面使用的什么分析函数了。
举例:
logtime createnum
2015-03-09-00 3
2015-03-09-01 1
2015-03-09-02 4
2015-03-09-03 2
2015-03-09-04 7
select logtime,sum(createnum) over(partition by to_char(to_date(logtime,'yyyy-mm-dd24'),'yyyy-mm-dd') order by logtime) as total_create
from t_test_createrole order by logtime
执行后:
logtime createnum
2015-03-09-00 3
2015-03-09-01 4
2015-03-09-02 8
2015-03-09-03 10
2015-03-09-04 17
2、row_number()和over()分组函数一起使用。返回一个虚拟的行值。和rownum属性差不多,都是返回一个虚拟的行值。
但是rownum如果和排序order by关键字处于同一级别的查询当中,它是先产生虚拟的行值然后再排序的。而row_number是在over函数参数的order by进行排序之后才产生的虚拟列。
3、decode(x,y,value1,value2)
含义:如果x等于y,则值为value1;如果不等于则值为value2。
4、nvl(x,y)
含义:如果x为null,则取y的值;否则,就为x的值。
5、to_date('2015-03-09','yyyy-mm-dd')
含义:把字符串'2015-03-09'变成'yyyy-mm-dd'格式的日期类型
格式类型:yyyy-mm-dd hh24 yyyy-mm-dd hh24:mi yyyy-mm-dd hh24:mi:ss
6、to_char(logtime,'mi')
含义:将logtime日期的分钟部分截取出来
7、trunc(value,format)
含义:这个函数是截取单词(truncate)的缩写,因此很容易让人误解是上面(6)的那种模式。
1、将日期截取到日、时、分
语句 结果 注释
select sysdate from dual; 2015-03-09 16:24:19 返回当前系统日期
select trunc(sysdate,'mi') from dual; 2015-03-09 16:24:00 返回的日期截止到分钟
select trunc(sysdate,'hh') from dual; 2015-03-09 16:00:00 返回的日期截止到小时
select trunc(sysdate,'dd') from dual; 2015-03-09 00:00:00 返回的日期截止到日
2、取回当前年、月、周的第一天
语句 结果 注释
select trunc(sysdate,'d') from dual; 2015-03-08 00:00:00 返回当前这个星期第一天的日期(周天)
select trunc(sysdate,'mm') from dual; 2015-03-01 00:00:00 返回当前这个月第一天的日期
select trunc(sysdate,'yy') from dual; 2015-01-01 00:00:00 返回当年第一天的日期
3、截取数字(纯粹的截取,不会进行逻辑分析,即不会进行四舍五入)
语句 结果
select trunc(123.456) from dual; 123
select trunc(123.456,0) from dual; 123
select trunc(123.456,1) from dual; 123.4
select trunc(123.456,-1) from dual; 120
select trunc(123.456,3) from dual; 0
select trunc(123.456,4) from dual; 0
8、round(number,digital)
含义:对浮点型数number保留digital小数位并进行四舍五入