Oracle常用函数(转换函数、聚合函数、数字函数、日期函数、字符串函数、逻辑函数、分析函数、排名函数、偏移函数)

Oracle常用函数

Oracle常用函数介绍

`Oracle常用函数有:转换函数、聚合函数、数字函数、日期函数、字符串函数、逻辑函数、分析函数、排名函数、偏移函数
例如:

一、三种转换函数TO_CHAR()、TO_DATE()、TO_NUMBER()

1.TO_CHAR(目标字段,’输出格式‘)

把日期转换成指定格式字符串。

1.select to_char(sysdate,'YYYY"年"MM"月"DD"日"') as TEST from dual; --2023年8月25日
2.select to_char(sysdate,'YYYY-MM-DD') as test from dual; --2023-08-25
3.select to_char(sysdate,'YYYY-MM') as test from dual; --2023-08
4.select to_char(sysdate,'YYYY') as yaer from dual; --2023
5.select to_char(sysdate,'MM') as MONTH from dual; --08
6.select to_char(sysdate,'DD') as Day from dual; --25
7.select to_char(sysdate,'SS') as Miao from dual; --15
8.select 123456.78,to_char(123456.78) as string from dual;

2.TO_DATE(目标对象,’输出格式’)

此处对象只能是符合实际日期的一个字符串类型;日期和数字型不能直接转换。

1.select to_date('20230809145345','YYYYMMDD HH24:MI:SS') as TIST_TIME from dual;
2.select to_date(20230809145345,'YYYYMMDD HH24:MI:SS') as TIST_TIME from dual; --隐式转换了,要避免隐式转换
3.select to_date('145345','HH24:MI:SS') as TIME from dual; --默认补全为当前月份第一天日期
4.select to_date('20230809','YYYYMMDD') as TIST_TIME from dual; --转换后日期带/
5.select to_date('20230809','YYYY-MM-DD') as TIST_TIME from dual; --转换后日期带/

3.TO_NUMBER(字符串)

把字符串转换成数字。

select '1234.56',to_number('1234.56') as numb from dual;

二、聚合函数 MAX()、MIN()、SUM()、AVG()、COUNT()

聚合函数:同时对多行进行操作,并返回一个结果 (别名 多行函数)。
聚合函数 结合 GROUP BY 一起使用。使用 GROUP BY 以后 ,聚合函数会根据分组字段,每个组返回一个计算结果。

使用了group by进行分组之后:

   1、select后面(要查询的字段/列)只能接这个分组的字段和聚合函数,不能跟未分组的字段一起查询
   2、分组后的过滤条件(HAVING),只能用分组字段(GROUP BY后面接的字段)或聚合函数过滤;HAVING  是对分组的结果进行过滤,放在 GROUP BY 后面。

数据说明:

在这里插入图片描述
empno代表员工编号,ename代表员工姓名,job代表工作岗位,mgr表示员工上级编号,hiredate表示员工入职日期,sal表示员工工资,comm表示员工奖金,deptno表示部门编号。

WHERE 和 HAVING 用法上的区别:

  1、WHERE 必须放在 GROUP BY 前面,HAVING 放在 GROUP BY 后面过滤。
   (WHERE是先过滤再分组,HAVING是先分组然后再过滤)
  2、WHERE 后面可以跟所有的条件,除了 不能 直接使用 聚合函数 作为条件。
   SELECT * FROM EMP E WHERE MAX(E.SAL)>1;  --报错
  3、HAVING 可以 直接使用聚合函数作为条件 , 只能跟 聚合函数 或 分组字段 作为条件。

1.MAX() 取最大值

select max(sal) from emp;  --查找员工表中工资的最大值 5000
select deptno,max(sal) from emp group by deptno;  --按照部门编号进行分组,找出每个部门中对应的员工工资的最大值。

在这里插入图片描述

2.MIN() 取最大值

select min(sal) from emp;  --查找员工表中工资的最小值 800
select deptno,min(sal) from emp group by deptno;  --按照部门编号进行分组,找出每个部门中对应的员工工资的最小值。

在这里插入图片描述

3.SUM() 取最大值

select sum(sal) from emp;  --求所有员工工资的总和 29025
select deptno,sum(sal) from emp group by deptno;  --按照部门编号进行分组,统计每个部门里面员工的工资总和。

在这里插入图片描述

4.AVG() 取最大值

select round(avg(sal),2) from emp;  --求所有员工工资的平均值 2073.21
select deptno,round(avg(sal),2) from emp group by deptno;  --按照部门编号进行分组,统计每个部门里面员工的工资的平均值。

在这里插入图片描述
注:round( x ,y )函数为四舍五入函数,指对数据 x 进行四舍五入,保留 y 位小数。

5.COUNT() 取最大值

select count(empno) from emp;  --求员工表中的员工数 14
select deptno,count(empno) from emp group by deptno;  --按照部门编号进行分组,统计每个部门里面员工的人数。

在这里插入图片描述

三、数字函数 ABS()、MOD()、POWER()、TRUNC()、ROUND()、CEIL()、FLOOR()

1.ABS() 取绝对值

  SELECT ABS(-1) FROM DUAL; -- 1
  SELECT ABS(-1.544) FROM DUAL; -- 1.544
  SELECT ABS(0) FROM DUAL; -- 0

2.MOD() 数值求余

  SELECT MOD(8,2) FROM DUAL; -- 0
  SELECT MOD(8,3) FROM DUAL; -- 2
  SELECT MOD(8,3.2) FROM DUAL; -- 1.6

3.POWER() 数值幂运算

  SELECT POWER(2,3) FROM DUAL;  --2的3次方 8
  SELECT POWER(2,3.4) FROM DUAL; -- 10.556
  SELECT POWER(-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值