`
orc_lh
  • 浏览: 8986 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Oracle函数trunc、to_date、round、next_day、ratio_to_report的使用

 
阅读更多

 

create table A(

       aid number primary key,

       aname varchar2(20),

       adate date,

       atext varchar2(50)

);

 

create sequence a1

start with 1

increment by 1;

 

create table B(

       bid number primary key,

       bname varchar2(20),

       btype varchar2(10),

       bdate date,

       bcount number,

       aid number references A(aid)

);

 

create sequence b1

start with 1

increment by 1;

 

 

insert into A values(a1.nextval,'ly0',(to_date('2012-10-26','yyyy-MM-DD')),'aaa0');

insert into A values(a1.nextval,'ly1',(to_date('2012-10-25','yyyy-MM-DD')),'aaa1');

insert into A values(a1.nextval,'ly2',(to_date('2012-10-24','yyyy-MM-DD')),'aaa2');

insert into A values(a1.nextval,'ly3',(to_date('2012-10-23','yyyy-MM-DD')),'aaa3');

insert into A values(a1.nextval,'ly4',(to_date('2012-10-22','yyyy-MM-DD')),'aaa4');

insert into A values(a1.nextval,'ly5',(to_date('2012-10-21','yyyy-MM-DD')),'aaa5');

insert into A values(a1.nextval,'ly6',(to_date('2012-10-20','yyyy-MM-DD')),'aaa6');

insert into A values(a1.nextval,'ly7',(to_date('2012-10-19','yyyy-MM-DD')),'aaa7');

insert into A values(a1.nextval,'ly8',(to_date('2012-10-18','yyyy-MM-DD')),'aaa8');

insert into A values(a1.nextval,'ly9',(to_date('2012-10-17','yyyy-MM-DD')),'aaa9');

insert into A values(a1.nextval,'ly10',(to_date('2012-10-16','yyyy-MM-DD')),'aaa10');

insert into A values(a1.nextval,'ly11',(to_date('2012-10-16 22:24:12','yyyy-MM-DD hh24:mi:ss')),'aaa11');

 

insert into B values(b1.nextval,'lyB0','a',(to_date('2012-10-26','yyyy-MM-DD')),8,1);

insert into B values(b1.nextval,'lyB1','c',(to_date('2012-10-25','yyyy-MM-DD')),8,1);

insert into B values(b1.nextval,'lyB2','b',(to_date('2012-10-24','yyyy-MM-DD')),8,2);

insert into B values(b1.nextval,'lyB3','a',(to_date('2012-10-23','yyyy-MM-DD')),8,1);

insert into B values(b1.nextval,'lyB4','b',(to_date('2012-10-22','yyyy-MM-DD')),8,3);

insert into B values(b1.nextval,'lyB5','b',(to_date('2012-10-21','yyyy-MM-DD')),8,5);

insert into B values(b1.nextval,'lyB6','a',(to_date('2012-10-20','yyyy-MM-DD')),8,1);

insert into B values(b1.nextval,'lyB7','d',(to_date('2012-10-19','yyyy-MM-DD')),8,2);

insert into B values(b1.nextval,'lyB8','e',(to_date('2012-10-18','yyyy-MM-DD')),8,4);

insert into B values(b1.nextval,'lyB9','c',(to_date('2012-10-17','yyyy-MM-DD')),8,4);

insert into B values(b1.nextval,'lyB10','a',(to_date('2012-10-16','yyyy-MM-DD')),8,2);

insert into B values(b1.nextval,'lyB11','c',(to_date('2012-9-16','yyyy-MM-DD')),8,1);

insert into B values(b1.nextval,'lyB12','a',(to_date('2012-9-12','yyyy-MM-DD')),8,2);

insert into B values(b1.nextval,'lyB13','d',(to_date('2012-9-13','yyyy-MM-DD')),8,4);

insert into B values(b1.nextval,'lyB14','a',(to_date('2012-9-11','yyyy-MM-DD')),8,3);

commit;

 

select * from A;

 

select * from B;

 

 

--查询当天的所有数据

select * from A where trunc(adate) = trunc(sysdate);

 

--一个星期的第一天

select trunc(sysdate,'d') from dual;

 

--一个星期的最后一天

select next_day(trunc(sysdate,'d'),7) from dual;

 

--最近一个星期之内的

select * from a 

where adate>=trunc(to_date('2012-11-15','yyyy-MM-DD'),'d') 

and adate<=next_day(trunc(to_date('2012-11-15','yyyy-MM-DD'),'d'),7);

 

 

--查询一个月的数据

select * from A where trunc(adate,'mm') = trunc(to_date('2012-10-15','yyyy-MM-DD'),'mm')

 

 

--B表中时间为2012-9的所有数据

select * from B where trunc(bdate,'mm')=trunc(to_date('2012-09','yyyy-MM'),'mm');

 

 

--查找出B表中type为a,b,c的所有和,和他们所占的比例

select t1.*,t2.*,round(t1.typecount/t2.allcount,4)*100||'%' from 

(select btype,sum(bcount) as typecount from b where btype in('a','b','c') group by btype) t1,

(select sum(bcount) as allcount from b where btype in('a','b','c')) t2 

 

--查询每一行占总的比例

--方法一:

select b.*,t1.allcount,round(b.bcount/allcount,4)*100||'%' from 

(select sum(bcount) as allcount from B) t1,b;

--方法二:

select bid,bname,btype,bdate,bcount,aid,ratio_to_report(bcount) over() as scale from B;

 

 

分享到:
评论

相关推荐

    oracle中函数 trunc(),round(),ceil(),floor的使用详解

    1.round函数(四舍五入) 描述 : 传回一个数值,该数值是按照指定的小数位元数进行四舍五入运算的结果 参数: number : 欲处理之数值 decimal_places : 四舍五入 , 小数取几位 ( 预设为 0 ) select round(123.456, ...

    Oracle中TO_DATE格式介绍

    TO_DATE格式(以时间:2007-11-0213:45:25为例) Year: yytwodigits两位年显示值:07 yyythreedigits三位年显示值:007 yyyyfourdigits四位年显示值:2007 Month: mmnumber两位月显示值:11 monabbreviated字符集表示显示值...

    oracle中to_date详细用法示例(oracle日期格式转换)

    1. 日期和字符转换函数用法(to_date,to_char) 代码如下:select to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) as nowTime from dual; //日期转化为字符串 select to_char(sysdate,’yyyy’) as nowYear from ...

    TRUNC_保留小数位

    TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_...

    oracle trunc函数使用介绍

    oracle trunc函数使用介绍 1.TRUNC(for dates) TRUNC函数为指定元素而截去的日期值。 其具体的语法格式如下: TRUNC(date[,fmt])

    Oracle中trunc()函数用法处理日期、数字类型数据

    Oracle中trunc()函数用法处理日期、数字类型数据

    oracle的trunc函数使用实例

    详细介绍了 oracle 内置 trunc 函数的使用场景及实例,对日期格式和数字格式的数据进行操作

    oracle trunc()函数的使用方法

    oracle trunc()函数是最常用的函数之一,下面就为您介绍oracle trunc()函数的用法,供您参考,希望可以让您对oracle trunc()函数有更深的...TRUNC(TO_DATE(’24-Nov-1999 08:00 pm’,’dd-mon-yyyy hh:mi am’))  

    oracle函数大全.doc

    SQL&gt;selectmonths_between(to_date('2000.05.20','yyyy.mm.dd'),to_date('2005.05.20','yyyy.mm.dd')) mon_betw from dual; MON_BETW --------- -60 39.NEW_TIME(date,'this','that') 给出在this时区=other时区的...

    Oracle常用函数Trunc及Trunc函数用法讲解

    主要介绍了Oracle常用函数Trunc及Trunc函数用法讲解,需要的朋友可以参考下

    Oracle自我补充之trunc()函数的使用方法

    1.TRUNC(for dates) TRUNC函数为指定元素而截去的日期值。 其具体的语法格式如下: TRUNC(date[,fmt]) ...TRUNC(TO_DATE(‘24-Nov-1999 08:37 pm‘,‘dd-mon-yyyy hh:mi am‘),‘hh‘) =‘24-N

    日常收集整理oracle trunc 函数处理日期格式(很实用)

    本文给大家分享的oracle trunc 函数处理日期格式的相关知识,非常具有参考价值,具体请看下文说明吧。 代码如下: select to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) from dual; –显示当前时间 2011-12-29 16:...

    【delphi_文章】delphi的取整函数round、trunc、ceil和floor.doc

    【delphi_文章】delphi的取整函数round、trunc、ceil和floor.doc

    SQL语句,查询当月,当年数据

    where t.create_time &gt;=trunc(next_day(sysdate-8,1)+1) and t.create_time&lt;=trunc(next_day(sysdate-8,1)+7) select trunc(next_day(sysdate - 8, 1) + 1) as 周一, trunc(next_day(sysdate - 8, 1) + 2) as ...

    oracle使用管理笔记(一些经验的总结)

    (7) to_date(string,'format') 28 (8)系统函数 29 14.oracle创建数据库实例 30 15.java操作oracle 31 16.oracle事务处理 34 17.oracle数据完整性 36 18.oracle 序列(sequence) 39 19.oracle 索引 40 20.oracle管理...

    ora_trunc_table.sh

    linux 下 shell 连接 oracle 数据库,对数据库数据处理操作。 脚本产生的背景是生产服务器每天产生几万笔数据,使用的数据库是oralceXE,当数据文件超过4G,会提示错误ORA-12953。因此需要调整数据库中部分表,日志...

    MYSQL,SQLSERVER,ORACLE常用的函数

    SQL&gt;selectmonths_between(to_date('2000.05.20','yyyy.mm.dd'),to_date('2005.05.20','yyyy.dd')) mon_betw from dual; MON_BETW --------- -60 39.NEW_TIME(date,'this','that') 给出在this时区=other时区的...

    Oracle_Database_11g完全参考手册.part3/3

    10.3 使用TO_DATE和TO_CHA设置日期格式 10.3.1 最常见的T0_CHAR错误 10.3.2 NEW_TIME:切换时区 10.3 3TO_DATE计算 10.4 wHere子句中的日期 10.5 处理多个世纪 10.6 使用ExTRACT函数 10.7 使用TIMESTAMP数据类型 第...

    Oracle_Database_11g完全参考手册.part2/3

    10.3 使用TO_DATE和TO_CHA设置日期格式 10.3.1 最常见的T0_CHAR错误 10.3.2 NEW_TIME:切换时区 10.3 3TO_DATE计算 10.4 wHere子句中的日期 10.5 处理多个世纪 10.6 使用ExTRACT函数 10.7 使用TIMESTAMP数据类型 第...

Global site tag (gtag.js) - Google Analytics