
sql cookbook
sql cookbook
优惠券已抵扣
余额抵扣
还需支付
¥39.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
scan724
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
row_number() over (partition by a.sql_id order by a.id desc ) r
SQL> select * from test; ID SQL_ID---------- ---------------------------------------------------------------------------------------------------- 1 aaa 2 aaa 3 aaa 4 aaa 2 bbb 1 bbb...原创 2020-04-14 15:04:42 · 357 阅读 · 0 评论 -
计算每分钟交易成功率
select vdate ,errcnt,succcnt, round(succcnt/(succcnt+errcnt),2) * 100 ||'%' from (select vdate,length(status) - length(replace(status,'失败','-')) as errcnt ,length(status) - length(replace(status,'成功'...原创 2019-12-24 10:02:41 · 491 阅读 · 0 评论 -
-提取大写字母
--提取大写字母:SQL> select * from v;A1--------------Stewie GriffinSQL> select replace(translate(A1,'1abcdefghijklmnopqrstuvwxyz','1'),' ','.') from v;REP---S.G原创 2014-08-17 20:35:56 · 1949 阅读 · 0 评论 -
取第10行到100行
select * from (select rownum rn ,a.* from dba_objects a ) where rn >10 and rn原创 2014-08-29 19:34:42 · 1082 阅读 · 0 评论 -
按字符分割计算列数
---计算按,分割列数SQL> select * from v;STR----------------10,CLARK,MANAGERSQL> select LENGTH(translate(translate(trim(str),'a0123456789','a'),'#ABCDEFGHIJKLMNOPQRSTUVWXYZ','#'))+1 from v;LENGTH(TR原创 2014-08-16 22:28:11 · 507 阅读 · 0 评论 -
Oracle日期显示格式
SQL> alter session set NLS_DATE_FORMAT='DD-MON-YY';SQL> select * from test_1;DW_DATA------------07-JAN-0101-JAN-0007-JAN-0112-SEP-14SQL> select * from test_1 where dw_data='12-SEP-14';DW_D原创 2014-09-12 13:38:08 · 999 阅读 · 0 评论 -
CONNECT BY LEVEL
SQL> select ename from emp where ename='KING';ENAME----------KING---需求 将KING 转换为如下模式:KING首选创建一个CREATE TABLE T10 AS SELECT LEVEL AS ID FROM dual CONNECT BY LEVEL <= 10;SQL> select * fro原创 2014-08-16 21:58:07 · 613 阅读 · 0 评论 -
update更新为空值的问题
SQL> set linesize 200SQL> set pagesize 200SQL> select * from a; ID AMT---------- ---------- 1 100 2 200 3 300 4 400SQL> select * from b; ID AMT---------- ---------- 1原创 2014-09-11 13:30:40 · 9158 阅读 · 0 评论 -
空格和NULL值两码事
drop table test1;create table test1(name varchar2(10));select * from test1;insert into test1 values(null);insert into test1 values('');--空格insert into test1 values(' ');--tab键insert int原创 2014-08-10 14:54:46 · 737 阅读 · 0 评论 -
WITH CHECK OPTION
SQL> desc emp 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- EMPNO NUMBER ENAME VARCHAR2(10) JOB VARCHAR2(10) MGR原创 2014-08-10 16:23:16 · 723 阅读 · 0 评论 -
update关联更新,主查询切记写上条件!!!!!!!!!!!
SQL> select empno,ename,deptno,dname from emp; EMPNO ENAME DEPTNO DNAME---------- ---------- ---------- -------------------------------------------------- 7369 SMITH 20 noname原创 2014-08-10 22:10:52 · 1966 阅读 · 0 评论 -
子查询里有rownum函数时
select * from t1 where object_id in (select object_id from t2 where t1.object_id=t2.object_id and rownum<10);create table t1 as select * from dba_objectscreate table t2 as select * from dba_obj原创 2014-08-03 11:12:09 · 825 阅读 · 0 评论 -
女人问我的一道面试题
需求:找出NAME列值最多的对应ID的最大值SQL> select * from key; ID NAME---------- ---------- 1 a 2 a 3 a 2 b 3 b 4 a 99 a 10000 b 99原创 2014-07-15 20:15:38 · 549 阅读 · 0 评论 -
计算工资
CREATE TABLE emp_bonus (empno INT , received DATE , TYPE INT);INSERT INTO emp_bonus VALUES( 7934, DATE '2005-5-17', 1 );INSERT INTO emp_bonus VALUES( 7934, DATE '2005-2-15', 2 );INSERT INTO emp_原创 2014-08-05 20:38:08 · 774 阅读 · 0 评论 -
正则表达式
+ 匹配一次及以上* 匹配0次及以上SQL> select * from a1;NAME----------abcabcdefabccccSQL> select * from a1 where name like '%abc%';NAME----------abcabcdefabccccSQL> select * from a1 where regexp原创 2014-08-17 13:50:57 · 483 阅读 · 0 评论 -
根据表中的行创建一个分隔列表
6.10 根据表中的行创建一个分隔列表---要求将emp表中的ename,用逗号间隔合并在一起显示。如:CLARK,KING,MILLERlistagg:把字符串连在一起SELECT deptno, SUM(sal) AS total_sal, listagg(ename, ',') within GROUP(ORDER BY ename) AS tot原创 2014-08-17 21:05:45 · 496 阅读 · 0 评论 -
listagg 使用说明
create table a100(deptno varchar2(10),ename varchar2(100));SQL> set linesize 200SQL> set pagesize 200SQL> select * from a100;DEPTNO ENAME---------- --------------------------------...原创 2019-09-01 10:30:52 · 389 阅读 · 0 评论 -
listagg 行转列
select a.consumer,a.status,count(*) from (select /*+ parallel(t 8)*/ p.description as consumer, case t.respcode when '000000' then '成功' when '01' then '成功' else '失败' end as status...原创 2019-08-31 12:53:41 · 264 阅读 · 0 评论 -
case 语句匹配顺序
mysql> select * from ClientLoginDevice;+--------------+| machineModel |+--------------+| Android01 || Android02 || Android03 || Androidpc || ios01 || ios02 || ios03原创 2015-12-02 11:35:23 · 570 阅读 · 0 评论 -
sql reg_substr
SQL> select ip, regexp_substr(ip,'[0-9]{1,3}',11) from machine_info;IP REGEXP_SUBSTR(IP,'[0-9]{1,3}',-------------------- ---------------------------------------------------------原创 2015-11-30 10:15:02 · 919 阅读 · 0 评论 -
mysql group 陷阱
mysql> SELECT -> sn,Clientsn,createdtime -> FROM -> ClientCashDetail -> WHERE -> createdTime < '2015-12-25 00:00:00' ->原创 2015-12-28 19:24:50 · 476 阅读 · 0 评论 -
mysql group by
mysql> select * from t2;+------+----------+------+| name | address | flag |+------+----------+------+| a | aaaaaaaa | 1 || a | bbbbbb | 1 || b | bbbbbb | 1 || b | bbbb原创 2015-12-11 19:04:37 · 146 阅读 · 0 评论 -
sql 使用单引号
SQL> select 'alter system kill session '||sid||','||serial#||';' from v$session where username='TEST';'ALTERSYSTEMKILLSESSION'||SID||','||SERIAL#||';'---------------------------------------------原创 2015-04-28 08:05:16 · 726 阅读 · 0 评论 -
oracle instr函数
1 您尾号1970的账户于2015-02-28 14:50存入RMB10.00,余额为RMB18970.002 尊敬的客户,您尾号1609的账户于2015-02-28 14:50本行汇款支出RMB0.01,余额为RMB1463568.863 尊敬的客户,您尾号0795的账户于2015-02-28 14:50本行汇款支出RMB0.01,余额为RMB1321477.59需求取出第一个RMB后原创 2015-03-17 16:12:25 · 464 阅读 · 0 评论 -
分组函数解析
分组函数:select sal,deptno,sum(sal) over (partition by deptno) from emp; ---按部门求总和SQL> select sal,deptno,sum(sal) over (partition by deptno) from emp; SAL DEPTNO SUM(SAL)OVER(PARTITIONBYDEPTNO-原创 2014-11-18 21:59:31 · 552 阅读 · 0 评论 -
利用自关联查找所有的blocking session
SQL> select * from test2; ID1 ID2---------- ---------- 1 2 2 4 4 8 8 10 10 12 126 rows selected.ID1 相当于阻塞者ID2 相当于持有者SQL> select 阻塞者.id2 from test2 "阻塞者原创 2014-09-17 19:07:45 · 635 阅读 · 0 评论 -
利用正则表达式处理字符
[0-9] 表示0123456789 [^0-9] 表示非数字的任意字符 SQL> select * from emp2;DATA--------------------------------------------------SMITH800ALLEN1600WARD1250JONES2975MARTIN1250BLAKE2850CLARK2450SCO原创 2014-08-17 12:58:42 · 496 阅读 · 0 评论 -
REGEXP_SUBSTR函数用法
6.14 提取第n个分隔的子串REGEXP_SUBSTR函数格式如下:function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)__srcstr :需要进行正则处理的字符串__pattern :进行匹配的正则表达式__position :起始位置,从第几个字符开始正则表达式匹配(默认为原创 2014-08-17 21:34:45 · 12666 阅读 · 0 评论 -
90-100的排在前面,然后按id排序
---90-100的排在前面,然后按id排序create table test5(id int);beginfor i in 1 .. 10000loopinsert into test5 values(i);end loop;end;select id from test5 order by (case when id >=90 and id<=100 then 1 el原创 2014-07-30 22:10:40 · 697 阅读 · 0 评论 -
比较两表数据
CREATE OR REPLACE VIEW v ASSELECT * FROM emp WHERE deptno != 10UNION ALLSELECT * FROM emp WHERE ename = 'WARD';SQL> set linesize 200SQL> select * from v where v.ename='WARD'; EMPNO ENAME原创 2014-08-04 21:20:37 · 510 阅读 · 0 评论 -
左链接,右连接
/*左表*/CREATE TABLE L ASSELECT 'left_1' AS str,'1' AS v FROM dual UNION ALLSELECT 'left_2','2' AS v FROM dual UNION ALLSELECT 'left_3','3' AS v FROM dual UNION ALLSELECT 'left_4','4' AS v FROM dua原创 2014-06-22 12:48:21 · 673 阅读 · 0 评论 -
关于拼接引号的问题
SQL> select ename||q'['aa']' from emp where deptno=10;ENAME||Q'['AA'--------------CLARK'aa'KING'aa'MILLER'aa'SQL> select ename||''''||'aa'||'''' from emp where deptno=10;ENAME||''''||'原创 2014-03-11 14:14:08 · 738 阅读 · 0 评论 -
开窗函数和聚合函数区别
select ename,sal,sum(sal) over (partition by ename order by sal,empno) as running_totalfrom emp1order by 2按ename 汇总salover()开窗函数和聚合函数的不同之处是对于每个组返回多行,而聚合函数对于每个组只返回一行。 SQL> select e.empno,原创 2014-02-18 16:22:09 · 1907 阅读 · 0 评论 -
利用over开窗函数取第一条记录
SQL> set linesize 200SQL> select * from (select a.* ,row_number() over( order by empno) rn from emp a)where rn=1 2 3 ; EMPNO ENAME JOB MGR HIREDATE SAL COMM原创 2014-02-18 16:15:24 · 5870 阅读 · 0 评论 -
关于自关联1
SESSION 1:SQL> select * from v$mystat where rownum<2; SID STATISTIC# VALUE---------- ---------- ---------- 1 0 0SQL> select * from a1; ID FLAG1 FLAG2-----原创 2014-01-22 20:16:44 · 613 阅读 · 0 评论 -
||拼接列关联和直接关联区别
SQL> select * from emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO---------- ---------- ---------- ---------- --------- ---------- ---------- ---------- 7369 SMITH原创 2014-01-05 16:59:33 · 852 阅读 · 0 评论 -
等值链接和非等值链接
..1..等值连接..equijoin..使用=符号连接,包括左右连接和全连接..2..非等值连接(non-equijoin)多表中指使用除等号..=..外的其他运算符号作为连接查询。其他符号指..、=、原创 2014-01-06 10:25:34 · 1999 阅读 · 0 评论 -
substr函数
---取1到3位SQL> select job,substr(job,1,3) from emp;JOB SUBSTR--------- ------CLERK CLESALESMAN SALSALESMAN SALMANAGER MANSALESMAN SALMANAGER MANMANAGER MANANALYST原创 2014-01-03 08:39:25 · 839 阅读 · 0 评论 -
Oracle 日期处理
select * from dt where dw_data=to_date(to_char(sysdate-1,'YYYY-MM-DD'),'YYYY-MM-DD') ---取前一天日期SQL> select * from dt where dw_data=trunc(sysdate-1,'dd');DW_DATA---------25-DEC-00S原创 2014-01-02 11:03:35 · 661 阅读 · 0 评论 -
translate函数使用
SQL> select data,translate(data,'0123456789','##########') as num1, replace(translate(data,'0123456789','##########'),'#','') as num2 from v;DATA NUM1 NUM2-------------------- ---------- -原创 2014-01-02 08:58:22 · 776 阅读 · 0 评论