ORACLE-常用函数

【一】、Oracle常用的统计函数

Avg(x):       求一组行中列x值的平均值
count(x):     求一组行中列x值的非空行数
count(*):     求一组行的总行数
max(x):       求一组行中列x值的最大值
min(x):       求一组行中列x值的最小值
stddev(x):    求一组行中列x值的标准差
sum(x):       求一组行中列x值的总和
variance(x):  求一组行中列x值的方差

【二】、group by与统计函数

使用上面介绍的函数时可以使用也可以不使用group by ,但在使用group by时,未在group by部分用到的列在select 部分出现时必须使用统计函数,如按角色统计平均年龄

Select user_name,avg(age) from users
Group by role_id; ×
Select count(user_name),avg(age) from users
Group by role_id; √

【三】、用having字句规定统计条件

having 子句的作用类似于where子句,只不过where 子句针对单个行,而having子句针对的是统计结果,一般和统计的函数搭配使用。Having子句后必须为前面select后面的子部分,或是group by 后面的字段

select count(uer_name),avg(age) from users group by role_id having role_id>20; ×
select count(uer_name),avg(age) from users group by role_id having avg(age)>20; √

【四】时间计算函数

两个Date类型字段:START_DATE,END_DATE,计算这两个日期的时间差(分别以天,小时,分钟,秒,毫秒):

天:  ROUND(TO_NUMBER(END_DATE - START_DATE))
小时:ROUND(TO_NUMBER(END_DATE - START_DATE) * 24)
分钟:ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60)
秒:  ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60)
毫秒:ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60 * 1000)

【五】其他oracle常用函数

Decode(column1,value1,output1,value2,output2,…..)
如果column1 有一个值为value1那么将会用output1 来代替当前值,如果column1 的值为value2 那么就用OUTPUT2 来代替当前值,如果column1 中哪两个值都不是,那么就会用OUTPUT3 来代替当前值

Select decode(age,10,7,9,6,3),user_name from users;

创建一个日期计算函数,排除周末

create or replace function cacu_day(beg_day in date, end_day in date)
  return number is
  v_result number(1) := 0;
  v_sqls   varchar2(1000);
begin
  v_sqls := 'with t as
                   (select rownum - 1 rn from dual connect by rownum <= 100)
                  select count(*)
                    from t
                   where :begDay + rn between :begDay and :endDay
                     and to_char(:begDay + rn, ''d'') not in (6, 7)';

  execute immediate v_sqls
    into v_result
    USING beg_day, beg_day, end_day, beg_day;

  return(v_result);
end cacu_day;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容