![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
读书笔记(开发)
文章平均质量分 56
cindy-berry
坚持
展开
-
截取逗号隔开的内容,并依次处理
今天看到存储过程里有Boss写的一段处理逻辑,也算是与之前几篇原创 2014-09-04 11:20:42 · 813 阅读 · 1 评论 -
group by 扩展函数实现报表的需求
DROP TABLE t;CREATE TABLE t(ORDER_date DATE,--订购日期 order_no NUMBER,--订购号 order_book VARCHAR2(10),--订购书籍 order_fee NUMBER,--订单总金额 order_num原创 2014-09-01 21:44:49 · 400 阅读 · 0 评论 -
求尚未使用的号段(读书笔记四)
求尚未使用的号段建表语句:CREATE TABLE t22(q VARCHAR2(8), a NUMBER(4), b NUMBER(4), c NUMBER(4));INSERT INTO t22 VALUES('A',0,999,1);INSERT INTO t22 VA原创 2014-09-14 11:31:25 · 431 阅读 · 0 评论 -
group by 扩展函数之GROUPING SETS
/*GROUPING SETS(a,b,c) = GROUP BY a UNION GROUP BY b UNION GROUP BY c即没有了 GROUP BY NULL*/SELECT to_char(b.hiredate,'yyyy') hire_year,a.dname,b.job,SUM(sal) sum_salFROM dept a,emp bWHERE a.dept原创 2014-08-31 20:41:54 · 650 阅读 · 0 评论 -
用group by 扩展函数实现sqlplus的break功能
---sqlplus的breakSELECT dname, lag(a.dname,1)over(PARTITION BY a.dname ORDER BY a.dname,b.job) , b.job,SUM(b.sal) sum_salFROM dept a,emp bWHERE a.deptno = b.deptnoGROUP BY ROLLUP(a.dna原创 2014-09-01 21:50:05 · 1047 阅读 · 0 评论 -
静态SQL和动态SQL之where in list问题(读书笔记之一)
--建两个表xy和yz作为测试用,所以表很简单,不需要数据DROP TABLE xy;CREATE TABLE xy(ID NUMBER);DROP TABLE yz;CREATE TABLE yz(ID NUMBER);--将all_objects copy到表t中,以便测试DROP TABLE t1;CREATE TABLE t1 AS SELECT * FROM原创 2014-09-04 00:12:37 · 1657 阅读 · 0 评论 -
group by扩展函数的习题(读书笔记)
习题脚本:DROP TABLE t;CREATE TABLE t(ORDER_date DATE,--订购日期 order_no NUMBER,--订购号 order_book VARCHAR2(10),--订购书籍 order_fee NUMBER,--订单总金额 or原创 2014-09-03 22:34:02 · 464 阅读 · 0 评论 -
正则表达式regexp_substr解决where in list问题(读书笔记之二)
--正则表达式regexp_substr解决where in list问题VAR str VARCHAR2(100);EXEC :str:='XY,YZ';SELECT COUNT(*) FROM t1 WHERE object_name IN(SELECT regexp_substr(:str,'[^,]+',1,LEVEL)AS value_str FROM dual CO原创 2014-09-04 00:16:30 · 1664 阅读 · 0 评论 -
使用常规字符串函数及动态视图解决where in list问题(读书笔记之三)
----使用常规字符串函数及动态视图/*如果数据库版本较低,无法使用正则表达式,则使用insert\SUBSTR等函数处理指定分隔符的字符串,将字符串按分隔符转为行,这样就可以像上面那样处理首先要解决的问题就是,如何使用Insert,SUBSTR等函数将字符串按分隔符转为多行记录,比如'ab,bc,cd'这个字符串来说,要转为3行记录分别为'ab'、'bc'、'cd',如何转换呢?一般原创 2014-09-04 00:18:24 · 552 阅读 · 0 评论 -
rman初级知识(读书笔记)
《三思笔记》--rman进入rman原创 2014-09-20 11:44:24 · 559 阅读 · 0 评论 -
解决where in list问题(续)
记不清是什么时候百度的一段代码,今天实验了一下原创 2014-09-17 17:20:52 · 497 阅读 · 0 评论 -
实验笔记--sql*loader
《三思笔记》首先linux下面原创 2014-09-17 22:29:15 · 424 阅读 · 0 评论 -
求缺失的号(读书笔记三)
求缺失的号建表语句:CREATE TABLE t21(ID NUMBER(3));INSERT INTO t21 VALUES(1);INSERT INTO t21 VALUES(2);INSERT INTO t21 VALUES(3);INSERT INTO t21 VALUES(4);INSERT INTO t21 VALUES(6);INSERT INTO t原创 2014-09-13 15:49:21 · 377 阅读 · 0 评论 -
group by扩展函数之group_id
/*group_id函数:无参数,由于扩展的group BY 分组允许多种复杂操作,如部分分组、重复列分组、连续分组等,有时为了实现复杂的报表功能,会有重复分组统计出现,而group_id就可以区分重复分组结果,第一次出现为0,以后每次出现增1,group_id在select中出现的意义不大,常在having中使用达到过滤重复统计的目的之前grouping SETS中有一个例子中就有重原创 2014-08-31 20:52:12 · 666 阅读 · 0 评论 -
group by扩展函数之grouping_id
/*grouping_id函数:用来过滤分组级别和排序结果的,因为grouping过滤比较麻烦该函数接受rollup,CUBE,GROUPING sets中的列,按从左到右的顺序计算,如果此列是分组列则为0,如果是对此列的小计或合计则为1,然后根基二进制序列转成十进制数*/SELECT a.dname,b.mgr,b.job,SUM(sal) sum_sal--,grouping_id原创 2014-08-31 20:48:07 · 470 阅读 · 0 评论 -
窗口函数之分析函数(读书笔记一)
窗口函数建实验表语句CREATE TABLE sales(country VARCHAR2(20), sale_month DATE, sales_number NUMBER(7), sales_value NUMBER(9,2));INSERT INTO sale原创 2014-09-07 21:06:30 · 477 阅读 · 0 评论 -
窗口函数之range的用法(读书笔记三)
--RANGE的具体用法SELECTemp_id,emp_name,dept_id,hire_date,salary,--首先按dept_id进行分组,其次按照hire_date进行排序,然后再把入职时间小于等于自身的所有员工薪资进行累计SUM(salary) OVER(PARTITION BY dept_id ORDER BY hire_date) sum_salary_part_or原创 2014-09-07 21:10:13 · 1611 阅读 · 1 评论 -
窗口函数之keep的用法(读书笔记四)
--keep的用法SELECT emp_id,emp_name,dept_id,hire_date,salary,dense_rank() OVER(PARTITION BY dept_id ORDER BY salary) dense_rank,MIN(hire_date) KEEP (dense_rank FIRST ORDER BY salary) OVER(PARTITION B原创 2014-09-07 22:42:04 · 3605 阅读 · 0 评论 -
窗口函数之rows的用法(读书笔记二)
--rows的具体用法SELECTemp_id,emp_name,dept_id,hire_date,salary,--首先按dept_id进行分组,其次按照hire_date进行排序,然后再把入职时间小于等于自身的所有员工薪资进行累计SUM(salary) OVER(PARTITION BY dept_id ORDER BY hire_date) sum_salary_part_原创 2014-09-07 21:06:20 · 1408 阅读 · 0 评论 -
oracle层次查询connect by (读书笔记)
--oracle层次查询connect by --首先给scott用户授查询权限:GRANT SELECT ON employees TO scott;GRANT SELECT ON jobs TO scott;CREATE TABLE employee ASSELECT a.employee_id,a.first_name||','||a.last_name employee_n原创 2014-09-08 13:53:09 · 1238 阅读 · 0 评论 -
sys_connect_by_path函数(读书笔记)
/*sys_connect_by_path(column,clear),其中column是字符型或能自动转换成字符型的列名,它的主要目的就是将父节点到当前节点的“path”按照指定的模式出现,char可以是单字符也可以是多字符,但不能使用列值中包含的字符,而且这个参数必须是常量,且不允许使用绑定变量,这个函数只能使用在层次查询中sys_connect_by_path就是从start w原创 2014-09-08 20:53:58 · 2264 阅读 · 0 评论 -
号段选取应用之已知号码求号段(读书笔记之一)
lead和lag的简单应用:SELECT rown,LAG(rown,2,-1) OVER(ORDER BY rown) PREVIOUS, LEAD(rown,2,-1) OVER(ORDER BY rown) NEXTFROM (SELECT ROWNUM+4 rown FROM dual CONNECT BY ROWNUM通过指定第二个参数来获得前两行和后两行的内原创 2014-09-09 22:23:57 · 462 阅读 · 0 评论 -
根据号段求出包含的数(读书笔记二)
建表语句:CREATE TABLE t20(ID NUMBER(2), s NUMBER(5), e NUMBER(5));INSERT INTO t20 VALUES(1,10,11);INSERT INTO t20 VALUES(2,1,5);INSERT INTO t20 VALUES(3,88,92);COMM原创 2014-09-13 14:08:33 · 417 阅读 · 0 评论 -
group by 扩展函数之rollup
/*功能:rollup后面指定的列以逗号隔开,计算结果与后面列的顺序有关,因为rollup分组过程具有方向性,先计算标准分组,然后列从右到左递减计算更高一级的小计,一直到列全部被选完,最后计算合计*/SELECT a.dname,b.job,SUM(b.sal) sum_salFROM dept a,emp bWHERE a.deptno = b.deptnoGROUP BY原创 2014-08-31 20:35:02 · 1473 阅读 · 0 评论 -
group by扩展函数之cube
/*cube比rollup比较,ROLLUP是按列的顺序从右到左递减分组统计,而cube是各种可能性的分组*/SELECT a.dname,b.job,SUM(b.sal) sum_salFROM dept a,emp bWHERE a.deptno = b.deptnoGROUP BY CUBE(a.dname,b.job);--------------------SELE原创 2014-08-31 20:37:38 · 463 阅读 · 0 评论 -
group by扩展函数之grouping
/*GROUPING函数:rollup和cube函数在查询结果中,有些行的列值会存在null,一般意味着是对此列的小计或者合计,但是null也有可能是原始数据存在的null,grouping函数专门处理扩展group BY 分组结果中null的问题GROUPING只接受一个参数,且此参数来自rollup\CUBE\GROUPING SETS中的列,grouping函数对于是小计或者合计的列原创 2014-08-31 20:48:55 · 400 阅读 · 0 评论 -
merge用法(读书笔记)
《剑破冰山》--merge用法转载 2014-09-28 23:03:34 · 562 阅读 · 0 评论