Oracle常用函数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数值函数
日期函数
SELECT TO_CHAR(sysdate,'YYYY-MM-DD HH24:MI:SS AM DY') FROM dual; SELECT TO_CHAR(sysdate,'YYYY"年"MM"月"DD"日"') FROM dual;
其他函数
5.高级查询(多表联合查询)
例子:
SELECT job 职务 , SUM(sal) 工资总和 FROM emp
WHERE job != 'PRESIDENT'
GROUP BY job
HAVING SUM(sal)>4500
ORDER BY SUM(sal);
分析函数
以下三个分析函数用于计算一个行在一组有序行中的排位,序号从1开始
ROW_NUMBER返回连续的排位,不论值是否相等
RANK具有相等值的行排位相同,序数随后跳跃
DENSE_RANK 具有相等值的行排位相同,序号是连续的
例子:
SELECT deptno, ename, sal, comm, RANK() OVER
(PARTITION BY deptno ORDER BY sal DESC, comm) RANK
FROM emp;
SELECT ename, job, deptno, sal, ROW_NUMBER() OVER
(ORDER BY sal DESC) AS SAL_RANK
FROM SCOTT.EMP;
SELECT d.dname, e.ename, e.sal, DENSE_RANK()
OVER (PARTITION BY e.deptno ORDER BY e.sal DESC)
AS DENRANK
FROM emp e, dept d WHERE e.deptno = d.deptno;
rollup()合计函数,求合计
cube ()合计函数比前一个更详细
例子(也可以叫交叉报表交叉报表)
create table test(sales varchar2(10),dest varchar2(10),revenue number)
insert into test values('smith','hangzhou',1000);
insert into test values('smith','wenzhou',2000);
insert into test values('allen','wenzhou',3000);
insert into test values('allen','wenzhou',4000);
SELECT sales, nvl(dest,'合计'),SUM(revenue)FROM test GROUP BY CUBE(sales, dest);
SELECT sales, nvl(dest,'合计'),SUM(revenue)FROM test GROUP BY ROLLUP(sales, dest);
比CUBE少2原因是没有对hangzhou、wenzou 的综合进行统计
nullif(exp1,exp2)如果相等返回null 不相等返回第一个