![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
oracle
文章平均质量分 86
岁寒松柏
在路上
尽管路的尽头未必是我想要的,但是我还必须坚持着,因为我所要的可能就在路的尽头
展开
-
ORACLE DATE和timestamp数据类型的比较
DATE数据类型 这个数据类型我们实在是太熟悉了,当我们需要表示日期和时间的话都会想到date类型。它可以存储月,年,日,世纪,时,分和秒。它典型地用来表示什么时候事情已经发生或将要发生。DATE数据类型的问题在于它表示两个事件发生时间间隔的度量粒度是秒。这个问题将在文章稍后讨论timestamp的时候被解决。可以使用TO_CHAR函数把DATE数据进行传统地包装,达到表示成多种格式的目的。转载 2013-01-16 14:41:29 · 969 阅读 · 0 评论 -
oracle实现/排名/求百分比
1- ROW_NUMBER() over() 实现排名select a.*,ROW_NUMBER() over(ORDER BY nvl(sal,0) DESC) as "名次" from emp a;2- 计算百分比函数ratio_to_report(c_allbalance) over() as c_ratio 计算每行 c_allbalance 占sum(c_allba转载 2012-11-08 19:47:42 · 1950 阅读 · 0 评论 -
计算入职年限员工人数占总人数的百分比
select a.*,round(count(*)over(partition by years )/count(*)over()*100,2) bfb from (select a.*, case when months_between(sysdate, hiredate) / 12 '20年及以下' w原创 2012-11-08 19:30:12 · 4357 阅读 · 1 评论 -
Oracle数据库 求百分比排名
例:有这样一列 列名为NO 值为 NO8.2% 2.1% 9.4% 1.7% 3.5% 7.1% 9.8% 8.1% 那么我想得到的结果是 NO 排名 8.2% 3 2.1% 7 9.4% 2 1.7% 8 3.5% 6 7.1% 5 9.8% 1 8.1%原创 2012-11-08 18:27:06 · 2665 阅读 · 0 评论 -
oracle 取出30%-60%的数据
在有一分数列(由高到低),我想取出该列的前30% 怎么取呀? 如果想取出30%-60%的数据又该怎么取?select *from(select a.*,row_number() over (order by 分数 desc) rn,count(*) over() totfrom a)这是30%的where trunc(100*rn/tot)30%-60%转载 2012-11-08 19:27:07 · 1977 阅读 · 0 评论 -
用Oracle RATIO_TO_REPORT计算总数百分比
除报告详细数据外,许多报告中还包括每行总数的百分比。例如,每名客户的订单相对于总订单的百分比,或每位销售代表的销售额相对于总销售额的百分比。传统上,Oracle计算百分比的方法是在总计报告的子查询中使用SUM函数总计报告,然后把那个结果放到细节表中相除来计算百分比。你还可以用一个子查询作为SELECT语句表达式:RATIO_TO_REPORT解析函数使得这种类型的查询更容易编码。O转载 2012-11-08 18:58:10 · 942 阅读 · 0 评论 -
oracle 数据库查询百分比
一道数据库问题如下:emp 表 (empno,ename,deptno,salary) dept表(deptno,dname)查询出员工薪水高于该员工所在部门的平均薪水的员工的所有信息,以及该部门高于平均工资的人数占到该部门的百分比?1. 查询出员工薪水高于该员工所在部门的平均薪水的员工的所有信息2. 该部门高于平均工资的人数占到该部门的百分比-----原创 2012-11-08 18:46:12 · 11120 阅读 · 0 评论 -
Oracle 根据两个数获取百分比的函数
CREATE OR REPLACE FUNCTION to_percent (a in number,b in number) return varchar2 is c varchar2(20); begin if(a=0 or b=0) then c:='0'; else c:= trunc(a*100/b,2)||'%'; end if ;return c; end;原创 2012-11-08 18:36:33 · 9048 阅读 · 0 评论 -
oracle 按照百分比排序
如果按照百分比排序,例如字段如下Online_user all_user 100 200 111 333 222 555 4 50我们可以得到 online_user all_user online_user/all_user 三个字段,我现原创 2012-11-08 18:35:44 · 4051 阅读 · 0 评论 -
oracle查询员工人数最少的部门
oracle查询员工人数最少的部门 [sql] --部门表 create table t_dept ( d_id number primary key , d_name varchar2(20) ); create sequence dept_sequence start with 1 i转载 2012-11-08 20:14:23 · 1229 阅读 · 1 评论 -
group by后的汇总结果,如何去和总和做百分比
有表如下:表名:table1字段有两个:name amount表的数据如下:---------------aa 10bb 20aa 10bb 20cc 30---------------select name, sum(amount)from table1group by name;返回结果:-------------aa 20原创 2012-11-08 19:19:29 · 11076 阅读 · 0 评论 -
Oracle数据库百分比格式化的解决方案
问题:需要对在Oracle数据库中查询出来的数值进行比率的计算。类似于如下的SQL:Select Round((discount/Amount),2) from dual;这样算出来的数字可以满足绝大部分的需求。但是对于不到1的数字,问题出来了......显示的类似于 .45样子的数据。0.45前面的0不见了。以下总结了两种方法来解决缺0的问转载 2012-11-08 19:08:03 · 906 阅读 · 0 评论 -
oracle中带有特殊符号的模糊查询
首先讲一下Oracle模糊查询Oracle模糊查询可使用的通配符,Oralce中SQL语句提供了四种匹配模式:% 零或者多个字符_ 单一任何字符(下划线)\ 特殊字符[] 在某一范围内的字符,如[0-9]或者[aeth] [^] 不在某范围内的字符,如[^0-9]或者[^aeth]后两种, 需要Oracle 10g以上使用支持like的转载 2012-11-06 18:31:35 · 761 阅读 · 0 评论 -
Oracle中start with...connect by prior子句用法
Oracle中start with...connect by prior子句用法 “在生成树状结构的时候用的比较多” connect by 是结构化查询中用到的,其基本语法是: select ... from tablename start with 条件1 connect by 条件2 where 条件3; 例: select * fr转载 2012-10-25 20:33:41 · 612 阅读 · 0 评论 -
ORACLE VIEW视图
Oracle视图Oracle的数据库对象分为五种:表,视图,序列,索引和同义词。 视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改。视图基于的表称为基表。 视图是存储在数据字典里的一条select语句。 通过创建视图可以提取数据的逻辑上的集合或组合。视图的优点: 1.对数据库的访问,因为视图可以有转载 2012-10-25 20:23:09 · 516 阅读 · 0 评论 -
oralce里面的单引号转义
在oracle中,字符串是由单引号引用的,而转义也是由单引号来完成的,这对于许多初学者而言是件头疼的事情,尤其是开始学习动态SQL的人。如果就单纯的单引号而言,很容易让人理解:它总是找与它最近的一个单引号配对。也就是所谓的就近原则;但是在单引号充当转义角色的时候,情况就显得有些让人费解了。(为方便起见,红色单引号都是充当转义角色)1、从第二个单引号开始被视为转义符,如果第二个单引号后面还有转载 2012-10-25 19:50:37 · 465 阅读 · 0 评论 -
oracle中带有特殊符号的模糊查询
首先讲一下Oracle模糊查询Oracle模糊查询可使用的通配符,Oralce中SQL语句提供了四种匹配模式:% 零或者多个字符_ 单一任何字符(下划线)\ 特殊字符[] 在某一范围内的字符,如[0-9]或者[aeth] [^] 不在某范围内的字符,如[^0-9]或者[^aeth]后两种, 需要Oracle 10g以上使用支持like的转载 2012-10-25 19:28:42 · 4146 阅读 · 0 评论 -
Oracle 递归查询 树查询 start with SQL CONNECT BY
Oracle树查询的最重要的就是select...start with... connect by ...prior 语法了。依托于该语法,我们可以将一个表形结构的中以树的顺序列出来。在下面列述了Oracle中树型查询的常用查询方式以及经常使用的 与树查询相关的Oracle特性函数等,在这里只涉及到一张表中的树查询方式而不涉及多表中的关联等。 以我做过的一个项目中的表为例,表结构如转载 2012-10-31 21:58:37 · 1146 阅读 · 0 评论 -
是否可以用sql语句实现分数的分段人数统计解决方法
是否可以用sql语句实现分数的分段人数统计比如说,一个学校内有几千名学生,想用考试成绩对其进行分档统计,10分一个分档,例如0-10分有几个人,10-20分有几个人,直到90-100分有几个人。表名是student_score,字段是 name,id,score。谢谢!------解决方案-----------------------------------------------转载 2012-11-08 19:51:22 · 22188 阅读 · 0 评论 -
wm_concat函数的排序问题
wm_concat在行转列的时候非常有用,但在行转列的过程中的排序问题常常难以控制。可见下面例子:准备测试表:drop table t;create table t (n number,m number);insert into t values(1,1);insert into t values(5,3);insert into t values(3,3);转载 2012-11-09 19:49:50 · 796 阅读 · 0 评论 -
Oracle函数wmsys.wm_concat的使用
首先介绍语法:wmsys.wm_concat Definition:The Oracle PL/SQL WM_CONCAT function is used to aggregate data from a number of rows into a single row, giving a list of data associated with a spec转载 2012-11-09 19:55:19 · 1147 阅读 · 0 评论 -
ORACLE 当月、本周、当年SQL查询
当月数据select * from table t where t.create_time >=trunc(sysdate, 'MM') and t.create_timesysdate) create_time为你要查询的时间 当年数据select * from table t where t.转载 2012-12-25 18:57:12 · 3992 阅读 · 0 评论 -
oracle 日期 查询
0.获得某个月所有天的列表:select * from (select to_char(to_date(to_char(to_date('200802','YYYYMM'), 'yyyymm') || '01', 'yyyymmdd')+ rownum - 1,'yyyy-mm-dd') days from dual start wit转载 2012-11-30 18:52:53 · 763 阅读 · 0 评论 -
oracle获取延期特定工作日以后的日期
oracle获取延期特定工作日以后的日期 在工作中可能会有这种需求,想要根据开始时间和延迟特定工作日天数获得延迟后的具体日期(不包含周末和节假日),例如:依据日期2012-08-27获取延迟5个工作日后的日期,得到具体日期2012-09-03; 那这种情况应该如何处理呢? 本文将从数据库角度来解决这一问题,当然利用代码在逻辑中更容易实现哦转载 2012-11-30 19:38:23 · 1085 阅读 · 0 评论 -
Oracle笔记(六)多表查询
Oracle笔记(六)多表查询 本次预计讲解的知识点1、 多表查询的操作、限制、笛卡尔积的问题;2、 统计函数及分组统计的操作;3、 子查询的操作,并且结合限定查询、数据排序、多表查询、统计查询一起完成各个复杂查询的操作; 一、多表查询的基本概念在之前所使用的查询操作之中,都是从一张表之中查询出所需要的内容,那么如果现在一个查询语句需要显示转载 2012-11-14 21:38:51 · 1138 阅读 · 0 评论 -
Oracle关联加号(+)
SQL连接,Oracle关联加号(+)等相关知识hebo2005:假设有 a表 id 1 2 3 4 b表 id 1 2 3 希望出来结果 a.id b.id 1 1 2 2 3 3 4 用left join 的SQL code select a.id,b.id form a left jo转载 2012-11-12 12:54:37 · 2458 阅读 · 0 评论 -
ORACLE查询树型关系(connect by prior start with)
connect by prior start with语句详解通过START WITH . . . CONNECT BY . . .子句来实现SQL的层次查询.自从Oracle 9i开始,可以通过 SYS_CONNECT_BY_PATH 函数实现将父节点到当前行内容以“path”或者层次元素列表的形式显示出来。自从Oracle 10g 中,还有其他更多关于层次查询的新特性 。例如,转载 2012-11-13 19:09:38 · 867 阅读 · 0 评论 -
oracle中 connect by prior 递归算法
Oracle中start with...connect by prior子句用法 connect by 是结构化查询中用到的,其基本语法是: select ... from tablename start with 条件1 connect by条件2 where 条件3; 例: select * from table start with org_id = 'HBH转载 2012-11-13 18:50:16 · 789 阅读 · 0 评论 -
connect by prior
收集的几条在oracle中通过connect by prior来实现递归查询 Start with...Connect By子句递归查询一般用于一个表维护树形结构的应用。 创建示例表: CREATE TABLE TBL_TEST ( ID NUMBER, NAME VARCHAR2(100 BYTE), PID转载 2012-11-13 19:54:09 · 1910 阅读 · 0 评论 -
Start with connect by prior 递归
在SELECT命令中使用CONNECT BY和蔼START WITH子句可以查询表中的树型结构关系。其命令格式如下:SELECT。。。CONNECT BY {PRIOR列名1=列名2|列名1=PRIOR裂名2}[START WITH];其中:CONNECT BY子句说明每行数据将是按层次顺序检索,并规定将表中的数据连入树型结构的关系中。PRIOR转载 2012-11-13 18:25:41 · 1143 阅读 · 0 评论 -
oracle字段拼接
select 数据库字段1 || '**** ' || 数据库字段2 || '**** ' || 数据库字段3 as 新的字段别名 from a; 输出结果 :数据库字段1**** 数据库字段2**** 数据库字段3原创 2012-11-12 13:09:51 · 762 阅读 · 0 评论 -
oracle rownum 终极讲解
oracle中rownum伪字段用得比较频繁,特别是分页之中,但是由于它的一些特殊性很多人可能并不理解它的实际行为,网络上有很多文章介绍这个 rownum的用法,但是很多都讲得非常模糊,或者就是不太全面,大家看起来也非常痛苦,在这里我将给大家全面讲解一下,希望对大家有所帮助:首先我们来认识几点rownum的特殊性:第一、rownum是在记录输出的时候才一步一步的产生的。第二、如果之前没转载 2012-11-12 13:19:19 · 636 阅读 · 0 评论 -
Oracle中的不等于号
关于Oracle中的不等于号: 在Oracle中, != ~= ^= 都是不等于号的意思。都可以使用。 但是奇怪是的, 我想拿出price不是180000的商品时:(price是Number类型的) SELECT id, name FROM product where price执行这个语句时,priceis null 的记录不出来。转载 2012-11-12 13:01:49 · 708 阅读 · 0 评论 -
一条比较经典的SQL
题目是这样的:有4张表分别是:学生信息表:学号 sid姓名 sname班级Id cid 学科表:学科Id courseId学科名称 courseName 学生成绩表:学生Id sid学科Id cours转载 2012-11-12 13:15:31 · 667 阅读 · 0 评论 -
学生表 课程表 成绩表 教师表 50个常用sql语句
Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,score) 成绩表Teacher(T#,Tname) 教师表 create table Student(S# varchar(20),Sname varchar(10),Sage int,Ssex varchar(2)) 前面加一列序号:i转载 2012-11-12 13:07:26 · 1219 阅读 · 0 评论 -
Oracle中Decode()函数使用技巧
DECODE函数是ORACLE PL/SQL是功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其他数据库厂商的SQL实现还没有此功能。DECODE有什么用途 呢? 先构造一个例子,假设我们想给职员加工资,其标准是:工资在8000元以下的将加20%;工资在8000元以上的加15%,通常的做法是,先选出记录中的工资字段值 select salary into var-salar转载 2012-11-09 20:47:29 · 522 阅读 · 0 评论 -
oracle wm_concat(column)函数的使用
使用oracle wm_concat(column)函数实现字段合并shopping:-----------------------------------------u_id goods num------------------------------------------1 苹果原创 2012-11-09 19:47:41 · 334 阅读 · 0 评论 -
COALESCE 函数 和CASE语句
COALESCE 函数返回列表中的第一个非空表达式。COALESCE ( expression, expression [ , ...] )expression 任意表达式。下面的语句返回值 34。SELECT COALESCE( NULL, 34, 13, 0 )备注如果所有参数均为 NULL,则 COALESCE 返回 NULL。原创 2012-11-09 20:54:04 · 404 阅读 · 0 评论 -
oracle关于模糊查询的问题
以前模糊查询使用的是:like例如(Schema KMH_QC): select v.unitprice, v.unit, v.STORAGE, v.stationeryname, v.stationeryid, v.modelsize, v.classname, v.classid FROM v_wjqc_storage v where转载 2012-10-31 21:01:38 · 410 阅读 · 0 评论 -
oracle is null 和is not null
当字符串为空时,在where 使用 is null来判断。例如:create table test( stuno number(10) primary key, stuname varchar2(50))insert into test(stuno) values(10)insert into test(stuno,stuname) values(1原创 2012-10-31 20:58:40 · 6364 阅读 · 0 评论