oracle函数
Mr_LH_525
一个中年小白。
展开
-
oracle中with table as临时表
with table as 是用于创建临时表,它是用来创建临时表,主要是在进行查询的时候,做一个测试用个人感觉好处有如下几点:1.起到一个测试作用,不需要创建实体表;2.当你需要进行一个复杂的查询时,可以从中提取单表或者多表的一些公共内容,这样不会造成很大的查询语句;3.对一些数据量比较大的多项查询时,可以使用它先产生有一个中间结果,而它是可以被语句中的select语句使用,可以提原创 2015-09-09 14:17:45 · 3450 阅读 · 0 评论 -
extract用法
与to_char一样,extract可以提取时间字段中的年月日时分秒。不同的是,extract的返回值确实number类型。create table test as select extract(year from systimestamp) as "year"from dual;desc test;可以发现返回的是number类型。区别:1.如上述2.extrac原创 2015-09-15 16:48:23 · 2248 阅读 · 0 评论 -
日期常用取值
select date, to_number(to_char(date,'hh24')) 时, to_number(to_char(date,'mi')) 分, to_number(to_char(date,'ss')) 秒, to_number(to_char(date,'dd')) 日,原创 2015-09-14 16:10:03 · 663 阅读 · 0 评论 -
根据表中的行创建一个分隔列表
比如name中的A,B,Coracle11.2的分析函数listaggselect cid, sum(sal) as total_sal, listagg(ename,' ,') within group by(order by ename) as total_namefrom tabnamegroup by cid;如上结果所示原创 2015-09-08 10:23:59 · 408 阅读 · 0 评论 -
枚举法计算全年周内星期几的次数
with x0 as (select to_date('2015-01-01','yyyy-mm-dd') as 年初 from dual),x1 as(select 年初,add_months(年初,12) as 下年年 from x0),x2 as(select 年初,下年初,下年初-年初 as 天数 from x1),x3 as/*生成列表*/(select 年初原创 2015-09-11 14:10:19 · 862 阅读 · 0 评论 -
计算两个日期之间的工作天数
返回A,B两个员工聘用日期之间的工作天数create table test as select level as idfrom dualconnect by levelselect sum(case when to_char(min_hd+test.id-1,'DY','NLS_DATE_LANGUAGE=American') i原创 2015-09-11 13:47:05 · 521 阅读 · 0 评论 -
分析函数lead()over(),lag()over()
select no, name, hiredate, lead(hiredate) over(order by hiredate) lead_hd, hiredate, lag(hiredate) over(order by hiredate) lag_hdfrom tabname原创 2015-09-11 14:17:01 · 4576 阅读 · 0 评论 -
计算字符在字符串中出现的次数
比如‘a,b,c’这个字符串中计算子串个数,我们一般都是计算其中的逗号个数加1create view v as select 'a,b,c' as str from dual;oracle11g给出了新函数regexp_countselect regexp_count(str,',')+1 as cnt from v;而在11g之前没有这个函数,我们可以用regexp_re原创 2015-08-21 10:43:51 · 711 阅读 · 0 评论 -
计算百分比-比例函数ratio_to_report
select no as 部门, 工资合计, 总合计, round((工资合计/总合计)*100,2) as 工资比列from (select no,工资合计,sum(工资合计) over() as 总合计 from (select no,s原创 2015-09-10 13:58:46 · 2123 阅读 · 0 评论 -
oracle简单小知识
1.约束constraint constraint_name check(codition)constraint constraint_name unique(column_name)constraint constraint_name foreign key (column_name)reference table_name(column_name)on de原创 2015-09-10 14:31:29 · 392 阅读 · 0 评论 -
取最大值最小值
分析函数select no, eno, max(name) keep(dense_rank first order by sal) over(partition by no) as 最小值, max(name) keep(dense_rank last order by sal) over(partition by no) as原创 2015-09-10 11:50:32 · 485 阅读 · 0 评论 -
关于函数row_number,rank,dense_rank排序
eg:返回排名前三的用户select no, sal, row_number() over(partition by mo order by sal desc) as row_number, rank() over(partition by mo order by sal desc) as rank, de原创 2015-09-10 11:16:02 · 765 阅读 · 0 评论 -
计算累计差
思路:先将需要进行累积的值变成负值,再进行累加,即得到累计差with x as(select rownum as seq,a.*from (select 编号,项目,金额 from detail order by 编号) a)select 编号, 项目, 金额, sum(case when seq=1 then 金额原创 2015-09-09 14:45:51 · 2561 阅读 · 0 评论 -
oracle创建本月日历
with x1 as/*1、给定一个日期*/(select to_date('2015-07-01','yyyy-mm-dd') as cur_date from dual),x2 as/*2、取月初*/(select trunc(cur_date,'mm') as 月初, add_months(trunc(cur_date,'mm'),1) as 下原创 2015-09-17 15:05:02 · 702 阅读 · 0 评论