
Oracle之分析函数
文章平均质量分 65
一个阳光努力的程序盐
要努力、要奋斗、但是不要被自己感动,没什么是不可能的,想做就可以做到
展开
-
Oracle之sum / over / partition by / order by联合使用
select sum(sal) over() from emp; --求总的和,相当于sum(sal)select empno,sal,sum(sal) over (order by empno) from emp; --根据empno,累加salselect empno,sal,deptno,sum(sal) over (order by deptno,sal desc) from原创 2017-08-14 15:04:30 · 2514 阅读 · 0 评论 -
Oracle之分析函数 - 各种分析函数例子
/*函数应用主要分为如下4类: 1 统计函数(MAX MIN AVG SUM COUNT等) 2.排序函数(ROW_NUMBER RANK DENSE_RNAK FIRST FIRST_VALUE LAST LAST_VALUE LAG LEAD 等) 3.数据分布函数(NTILE CUME_DIST PERCENT_RANK PERCENTILE_CON PERCENTI原创 2017-11-05 16:40:50 · 1679 阅读 · 0 评论 -
Oracle之分析函数应用- 连续值判断
drop table t purge;create table t (id1 int,id2 int ,id3 int);insert into t (id1 ,id2,id3) values (1,45,89);insert into t (id1 ,id2,id3) values (2,45,89);insert into t (id1 ,id2,id3) values (3,原创 2017-11-05 16:38:14 · 1549 阅读 · 0 评论 -
Oracle之分析函数 去重 应用
DROP TABLE t purge ;CREATE TABLE t AS SELECT * FROM dba_objects WHERE rownumUPDATE t SET object_id=rownum;UPDATE t SET object_id=3 WHERE object_idUPDATE t SET object_id=4 WHERE object_id>=4 AN原创 2017-11-05 16:36:49 · 1185 阅读 · 0 评论 -
Oracle之分析函数 之 order by子句
/*有ORDER BY的存在将添加一个默认的开窗子句!意味着从第一行到当前行;没有ORDER BY时,默认的窗口是全部的分区 ;在Order by 子句后可以添加nulls last,如:order by comm desc nulls last 表示排序时忽略comm列为空的行. 不写between AND ,在有order BY 的情况下,就是分组第一行原创 2017-11-05 16:13:45 · 1188 阅读 · 0 评论 -
Oracl之开窗函数 - Range
/*1. RANGE窗口仅对NUMBERS和DATES起作用,因为不可能从VARCHAR2中增加或减去N个单元2. 在RANGE的开窗中,ORDER BY中只能有一列;ROWS的开窗的ORDER BY 可以有多列。 */Rich table emp purge;CREATE TABLE emp( emp_id NU原创 2017-11-05 15:41:12 · 3274 阅读 · 1 评论 -
Oracle之开窗函数 - 详解 AND Rows
解析:三个位置:最前边一行,最后边一行,当前行位置永远是自上而下的drop table emp purge;CREATE TABLE emp( emp_id NUMBER(6), ename VARCHAR2(45), dept_id NUMBER(4), hire_date DATE, sal NUMBER(8,原创 2017-11-05 02:39:26 · 3155 阅读 · 0 评论 -
Oracle之row_number() / rank() / dense_rank() / over(partition order by)序列函数
select deptno,empno,sal,row_number() over(partition by deptno order by sal desc) as row_number from emp;select deptno,empno,sal,rank() over(partition by deptno order by sal desc) as rank from emp;原创 2017-08-14 15:03:38 · 950 阅读 · 0 评论 -
Oracle分析函数之first()和last()函数
select deptno ,last_value(sal) over(order by deptno) first_sal,sal from emp;--order by分组有效 select deptno ,first_value(sal) over(order by deptno) first_sal,sal from emp;--order by分组无效原创 2017-08-30 15:38:37 · 5260 阅读 · 0 评论 -
Oracle分析函数之lead()和lag()函数
Oracle的LAG和LEAD分析函数Lag函数可以在一次查询中取出当前行的同一字段的前面第N行的数据。Lead函数可以在一次查询中取出当前行的同一字段的后面第N行的值。lead 和lag 的语法类似以下以lag为例进行讲解!lag(exp_str,offset,defval) over()讲解:exp_str-需要查询偏移的原创 2017-08-29 15:23:27 · 766 阅读 · 0 评论 -
Oracle之分析函数例子 - 高频数获取
drop table emp purge;CREATE TABLE emp( emp_id NUMBER(6), ename VARCHAR2(45), dept_id NUMBER(4), hire_date DATE, sal NUMBER(8,2));--创建emp数据INSERT INTO emp (emp原创 2017-11-05 16:50:12 · 296 阅读 · 0 评论