优化笔记:jsyhjkzqxx_D_20140916.gz
有几张表没有权限,所以跑不起来。
目测黄色部分比较坑爹,死了n多脑细胞才看懂,又死了n多脑细胞才改出来。对5034进行了2次扫描,并多次分组排序求和。(分组和排序算法相对来说比较耗性能)
改为只扫描一次,一次编号操作。
这个没有什么既定的规则,就是使劲想各种奇葩办法简化。(这个改写就是利用了oracle在排序的时候,把null当成无穷大。而在sqlserver上就不适用了,因为sqlserver在排序的时候把null当无穷小)
黄色部分可改为下面的代码。
select *
FROM (select f1_5034,
decode(min(rn_a) - 1, 1, 0, min(rn_a) - 1) ylqk,
min(rn_b) - 1 bbqk
from (select case
when nvl(f25_5034, 0) > 0 then null
else rn end rn_a,
case
when f25_5034 Is not Null then null
else rn end rn_b,
f1_5034
from (Select f1_5034,
f3_5034,
f25_5034,
row_number() Over(partition By f1_5034 Order By f3_5034 Desc) rn
From wind.tb_object_5034
Where f3_5034 Like '%1231'))
group by f1_5034)
where bbqk is not null
--------------------原代码-------------------------
Select fdate,zqdm,zqmc,jysc,xzjq,dqsyl,fsynx,ffxjg,fpmje,fsqpmlv,ffxcs,ffxfs,fscfxr,
fssdd,fjxqsr,jxjzr,fxgm,cqxypj,dqxypj,'NULL' gjxypj,jhht,fldzrdb,ffxgsdm,fgsjc,zqlx,nvl(bbqk,0) bbqk,fxrq,
Case When nvl(zzc,0)<>0 Then 1 Else 0 End As xxplqk,ylqk ylqk,
hxzbczl,zzc,jzc,DbrXyPj,rzzt,shzt,'1' lsyjs,Jjbz, cxsmc, cxqsr,cxjzr,bjyy,lvlx,syyhdb,FCqXypj,FDqXypj,FGjxypj,FGnxypjJgd,FGjxypjJgd,DCqXypj,
'NULL' DGjxypj,flvjz,'NULL' FYsSyr, '0' fsdq ,'NULL' fsdqsr ,'NULL' fsdjzr ,'NULL' Fsdjzr2 ,fjcjq,flljq, '1' ffxzt,flvjzlb,'1' Ffxlx, fdbrdm,fdbr,Fdbrxz,FdbrSnmJzc,fsndgncqxy,Fdbrgnpjjg,
Ffxrlb,fzgr,fzgjzr,x.f13_5015 fzgbl,x.f12_5015 fzgjg, 'NULL' fzgzqdm,fsfsh,'NULL' fjkyy,fdbrzt,fggxx,
(Select F68_1854
From wind.tb_object_1854 T
Where nvl(BbQk, 0) >= 1
And F1_1854 = F25_4516
And F4_1854 = '合并报表'
And substr(F2_1854, 5, 8) = '1231'
And f2_1854 = (Select Max(f2_1854)
From Wind.tb_object_1854
Where T.f1_1854 = f1_1854
And substr(F2_1854, 5, 8)='1231'
And f4_1854 = '合并报表')) fsnlr,
(Select F68_1854
From wind.tb_object_1854 T
Where nvl(BbQk,0) >= 2
And F1_1854 =F25_4516
And F4_1854 ='合并报表'
And substr(F2_1854, 5, 8) = '1231'
And f2_1854 = (Select substr(Max(f2_1854),1,4)-1||'1231'
From Wind.tb_object_1854
Where T.f1_1854 = f1_1854
And substr(F2_1854, 5, 8)='1231'
And f4_1854 = '合并报表')) fqnlr,
(Select F68_1854
From wind.tb_object_1854 T
Where nvl(BbQk,0) >= 3
And F1_1854 =F25_4516
And F4_1854 ='合并报表'
And substr(F2_1854, 5, 8) = '1231'
And f2_1854 = (Select substr(Max(f2_1854),1,4)-2||'1231'
From Wind.tb_object_1854
Where T.f1_1854 = f1_1854
And substr(F2_1854, 5, 8)='1231'
And f4_1854 = '合并报表')) fdqnlr,
(Select F140_1853
From wind.tb_object_1853 T
Where nvl(BbQk, 0) >= 1
And F1_1853 = F25_4516
And F4_1853 = '合并报表'
And substr(F2_1853, 5, 8) = '1231'
And f2_1853 = (Select Max(f2_1853)
From Wind.tb_object_1853
Where T.f1_1853 = f1_1853
And substr(F2_1853, 5, 8)='1231'
And f4_1853 = '合并报表')) FsnmfxrNav
, Ffxrdchqyz
From (
(SELECT to_char(&PlanTime - 1, 'YYYYMMDD') fdate,
f1_4516 zqdm,
f2_4516 zqmc,
f43_4516,
f25_4516,
f40_1429,
Case
When f12_4516 = '上交所' Then '1'
When f12_4516 = '深交所' Then '2'
When f12_4516 = '银行间' Then '3'
Else '4' End As jysc,
Case
When f2_1639 = to_char(&PlanTime - 1, 'YYYYMMDD') Then f5_1639
Else 0
End As xzjq,
Case
When f2_1639 = to_char(&PlanTime - 1, 'YYYYMMDD') Then f3_1639 Else Null End As dqsyl,
Case
When f2_1639 = to_char(&PlanTime - 1, 'YYYYMMDD') Then f9_1639
Else 0
End As fsynx,
f8_4516 ffxjg,
f7_4516 fpmje,
f5_4516 fsqpmlv,
f9_4516 ffxcs,
Case
When F10_4516 = '4' Then '1'
When F10_4516 = '0' Then '2'
When F10_4516 = '1' Then '3'
When F10_4516 = '2' Then '4'
When F10_4516 = '3' Then '5'
Else Null End As ffxfs,
(Select Min(f8_1270) From wind.tb_object_1270 Where F1_1270 = F43_4516) fscfxr,
Case f13_4516
When '上交所' Then 'H'
When '深交所' Then 'S'
When '银行间' Then 'Y'
Else Null End As fssdd,
f3_4516 fjxqsr,
f4_4516 jxjzr,
F26_4516 * 100000000 fxgm,
Case
When f47_1429 Is Not Null Then '1'
Else '0' End As jhht,
Case
When F48_1429 = '不可撤销连带责任担保' Then '1'
End As fldzrdb,
f25_4516 ffxgsdm,
f24_4516 fgsjc,
Case
When F17_4516 = '321' Then '1'
When F17_4516 = '333' Then '3'
When F17_4516 = '322' And F29_1429 Is Null Then '2'
When F17_4516 = '322' And F29_1429 = '公司债' Then '11'
When F17_4516 = '322' And F29_1429 = '中期票据' Then '13'
When F17_4516 = '323' And F29_1429 <> '可分离转债' Then '4'
When F17_4516 = '323' And F29_1429 = '可分离转债' Then '12'
When F17_4516 = '310' And F29_1429 Is Null Then '6'
When F17_4516 = '310' And F29_1429 Is Not Null Then '14'
When F17_4516 In ('331', '340') Then '7'
When F17_4516 = '341' Then '8'
When F17_4516 = '342' Then '9'
Else '0 '
End As zqlx,
f20_4516 fxrq,
Case
When F29_1429 = '可转债' Then
'中国证券监督管理委员会'
When F4_1090 = 'Q' And F29_1429 Not In ('中期票据', '短期融资券') Then
'发展和改革委员会'
Else 'NULL'
End As shzt,
Case
When (F32_1429 Like '%铁路%' And F47_1429 = '2002638') Or
(F32_1429 Like '%三峡%' And F47_1429 = '2002650') Then '1'
Else '0' End As Jjbz,
nvl((Select t.ob_object_name_1020 From Wind.tb_object_1020 t
Where f27_1429=t.ob_object_id),'NULL') CxsMc,
f15_4516 cxqsr,
f16_4516 cxjzr,
Null bjyy,
Case
When f34_1429 = '贴现' Then '贴现债券'
When f11_1429 = '固定利率' Then '固定利率'
When f11_1429 = '累进利率' Then '浮动利率-固定利率'
When f11_1429 = '浮动利率' Then '浮动利率-市场利率'
Else Null End As lvlx,
Case
When f48_1429 = '不可撤销连带责任担保' Then 1 Else 0 End As syyhdb,
NVL((SELECT f4_1703 - f39_1429
FROM wind.tb_object_1703
Where f1_1703 = f1_1429
And f3_1703 = (SELECT Min(f3_1703)
FROM wind.tb_object_1703
Where f1_1703 = f1_1429)),0) flvjz,
NVL(f15_1639,0) fjcjq,
NVL(f16_1639,0) flljq,
Case
When f47_1429 Is Not Null Then f47_1429 Else 'N' End As fdbrdm,
Case
When f34_1018 = F47_1429 Then ob_object_name_1018 Else 'N' End As fdbr,
Case
When f34_1018 = F47_1429 And F40_1018 = 2 Then '1' Else '2' End As Fdbrxz,
Case
When f34_1018 = F47_1429 And F40_1018 = '2' And
F41_1018 = 49 Then '105'
When f34_1018 = F47_1429 And F40_1018 <> '2' And
F41_1018 = 49 Then '205'
When f34_1018 = F47_1429 And F40_1018 = '2' And
F41_1018 <> 49 Then '1'
When f34_1018 = F47_1429 And F40_1018 <> '2' And
F41_1018 <> 49 Then '2'
When f34_1018 = F47_1429 And F41_1018 = '25' Then '3'
When f40_1429='2000850' Then '2'
Else '4' End As Ffxrlb,
Case
When Exists (Select 1
From wind.tb_object_1269
Where f1_1269 = f25_4516
And f85_1269 Is Null) Then 1
Else 0 End As fsfsh,
Case
When f34_1018 = F47_1429 And F41_1018 = '11' Then '1'
When f34_1018 = F47_1429 And F41_1018 = '29' Then '2'
When f34_1018 = F47_1429 And F41_1018 = '4' Then '3'
When f34_1018 = F47_1429 And F41_1018 = '27' Then '4'
When f34_1018 = F47_1429 And ob_object_name_1018 = '中国人民银行' Then '5'
When f34_1018 = F47_1429 And F41_1018 = '25' Then '6'
When f34_1018 = F47_1429 And F41_1018 = '3' Then '7'
Else '8' End As fdbrzt,
(Select f7_1271
From wind.tb_object_1271
Where f1_1271 = f43_4516) fzgjzr,
nvl((SELECT f3_1735
FROM wind.tb_object_1735 a
Where F1_1735 = F43_4516
And F2_1735 = '长期信用评级'
And f4_1735 = (SELECT Max(f4_1735)
FROM wind.tb_object_1735 b
Where a.f1_1735 = b.f1_1735
And b.f2_1735 = '长期信用评级')
And rownum = 1),'NULL') cqxypj,
NVL((SELECT f3_1735
FROM wind.tb_object_1735 c
Where F1_1735 = F43_4516
And F2_1735 = '短期信用评级'
And f4_1735 = (SELECT Max(f4_1735)
FROM wind.tb_object_1735 d
Where F43_4516 = d.f1_1735
And F2_1735 = '短期信用评级')
And rownum = 1),'NVLL') dqxypj,
NVL((SELECT f4_1454
FROM wind.tb_object_1454 c
Where F1_1454 = F25_4516
And F54_1454 = '408001000'
And f2_1454 = (SELECT Max(f2_1454)
FROM wind.tb_object_1454 d
Where F25_4516 = d.f1_1454
And F54_1454 = '408001000')),0) hxzbczl,
NVL((SELECT f145_1853
FROM wind.tb_object_1853 c
Where F1_1853 = F25_4516
And F4_1853 = '合并报表'
And f2_1853 = (SELECT Max(f2_1853)
FROM wind.tb_object_1853 d
Where F25_4516 = d.f1_1853
And F4_1853 = '合并报表')),0) zzc,
NVL((SELECT f140_1853
FROM wind.tb_object_1853 c
Where F1_1853 = F25_4516
And F4_1853 = '合并报表'
And f2_1853 = (SELECT Max(f2_1853)
FROM wind.tb_object_1853 d
Where F25_4516 = d.f1_1853
And F4_1853 = '合并报表')),0) jzc,
NVL((Select f4_1734
From wind.tb_object_1734 a, wind.tb_object_0004
Where ob_object_name_1018 = f1_0004
And f3_0004 = f2_1734
And f5_1734 = (Select Max(f5_1734)
From wind.tb_object_1734 b
Where b.f1_1734 = a.f1_1734)
And rownum = 1),'NULL') DbrXyPj,
Case
When f41_1018 = '11' Then '1'
When f41_1018 = '29' Then '2'
When f41_1018 In ('4', '5') Then '3'
When f41_1018 = '49' And OB_OBJECT_NAME_1018 = '中国人民银行' Then '5'
When f41_1018 = '17' Then '6'
Else '7' End As rzzt,
nvl((SELECT f4_1734
FROM wind.tb_object_1734 c
Where F2_1734 = F25_4516
And F3_1734 = '长期信用评级'
And f5_1734 = (SELECT Max(f5_1734)
FROM wind.tb_object_1734 d
Where c.f1_1734 = d.f1_1734
And d.F3_1734 = '长期信用评级')
And rownum = 1),'NULL') FCqXypj,
NVL((SELECT f4_1734
FROM wind.tb_object_1734 c
Where F2_1734 = F25_4516
And F3_1734 = '短期信用评级'
And f5_1734 = (SELECT Max(f5_1734)
FROM wind.tb_object_1734 d
Where c.f1_1734 = d.f1_1734
And d.F3_1734 = '短期信用评级')
And rownum = 1),'NULL') FDqXypj,
'NULL' FGjxypj,
NVL((Select f6_1734
FROM wind.tb_object_1734 c
Where F2_1734 = F25_4516
And f5_1734 = (Select Max(f5_1734)
From wind.tb_object_1734 d
Where c.f1_1734= d.f1_1734)
And rownum = 1),'NULL') FGnxypjJgd,
'NULL' FGjxypjJgd,
nvl((SELECT f4_1734
FROM wind.tb_object_1734 c
Where F2_1734 = F25_4516
And F3_1734 = '长期信用评级'
And f5_1734 = (SELECT Max(f5_1734)
FROM wind.tb_object_1734 d
Where c.f1_1734 = d.f1_1734
And d.F3_1734 = '长期信用评级')
And rownum = 1
),'NULL') DCqXypj,
(SELECT Case
When F4_1641 = '1年期定期存款利率' Then 2082
When F4_1641 = '半年期定期存款利率' Then 2061
When F4_1641 = '三个月定期存款利率' Then 2070
When F4_1641 = '7天回购定盘平均值' Then 4016
When F4_1641 = '7天回购利率平均值' And f6_1641 = 'B2W' Then 4003
When F4_1641 = '7天回购利率平均值' And f6_1641 = 'B_2W' Then 4002
When F4_1641 = '7天回购利率平均值' And f6_1641 = 'B_1M' Then 3976
When F4_1641 = 'LIBOR' And f6_1641 = 'LIBOR_6M-USD' Then 5041
When F4_1641 = 'SHIBOR' And f6_1641 = 'SHIBOR_3M(10)' Then 7480
When F4_1641 = 'SHIBOR' And f6_1641 = 'SHIBOR_3M(5)' Then 7606
When F4_1641 = 'SHIBOR' And
f6_1641 = 'SHIBOR_1W(120)' Then 7942
When F4_1641 = 'SHIBOR' And f6_1641 = 'SHIBOR_1Y(10)' Then 9595
When F4_1641 = 'SHIBOR' And f6_1641 = 'SHIBOR_1Y(20)' Then 13216
End x FROM wind.tb_object_1641 Where f1_1641 = f43_4516) flvjzlb,
NVL((SELECT f140_1853
FROM wind.tb_object_1853
Where F1_1853 = F47_1429
And F4_1853 = '合并报表'
And f2_1853 = (SELECT Max(f2_1853)
FROM wind.tb_object_1853
Where F1_1853 = F47_1429
And F4_1853 = '合并报表')),0) FdbrSnmJzc,
NVL((SELECT f4_1734
FROM wind.tb_object_1734 c
Where F2_1734 = F25_4516
And F3_1734 = '长期信用评级'
And f5_1734 = (SELECT Max(f5_1734)
FROM wind.tb_object_1734 d
Where c.f1_1734 = d.f1_1734
And c.F3_1734 = '长期信用评级')
And rownum = 1),'NULL') fsndgncqxy,
NVL((Select f6_1734
FROM wind.tb_object_1734 c
Where F2_1734 = F25_4516
And F3_1734 = '长期信用评级'
And f5_1734 = (Select Max(f5_1734)
From wind.tb_object_1734 d
Where c.f1_1734 = d.f1_1734
And F3_1734 = '长期信用评级')
And rownum = 1),'NULL') Fdbrgnpjjg,
(Select Max(f3_5015) From wind.tb_object_5015 Where f2_5015 =f43_4516 And f12_5015 Is Not Null And f13_5015 Is Not Null ) fzgr
From wind.tb_object_4516
Left Join wind.tb_object_1639 On F1_1639 = F43_4516
And f2_1639 =
to_char(&PlanTime - 1, 'YYYYMMDD')
Left Join wind.tb_object_1429 On F1_1429 = F43_4516 And (F30_1429>=to_char(&PlanTime,'yyyymmdd') Or F30_1429 Is Null)
Inner Join wind.tb_object_1090 On f1_1429 = f2_1090
Left Join wind.tb_object_1018 On F25_4516 = F34_1018) a
--取报表情况和盈利情况
Left Join (Select a.f1_5034, decode(ylqk, 1, 0, ylqk) ylqk, bbqk
From (Select f1_5034, nvl(Min(rn) - 1, Sum) ylqk
From (Select f1_5034,f3_5034,f25_5034,row_number() Over(partition By f1_5034 Order By f3_5034 Desc) rn,
Sum(1) Over(partition By f1_5034) Sum
From wind.tb_object_5034 Where f3_5034 Like '%1231') t
Where nvl(f25_5034, 0) <= 0
Group By f1_5034, Sum) a,
(Select f1_5034, nvl(Min(rn) - 1, Sum) bbqk
From (Select f1_5034, f3_5034, f25_5034,row_number() Over(partition By f1_5034 Order By f3_5034 Desc) rn,
Sum(1) Over(partition By f1_5034) Sum
From wind.tb_object_5034 Where f3_5034 Like '%1231') t
Where f25_5034 Is Null
Group By f1_5034, Sum) b
Where a.f1_5034 = b.f1_5034) tt On a.ffxgsdm = tt.f1_5034
--取fggxx字段
Inner Join (Select Distinct f1_4516, f2_4516,
Case When F37_1673 Is Null And Not Exists
(Select 1
From wind.tb_object_1673 b
Where f37_1673 Is Not Null
And b.f1_1673 = a.f1_1673) Then 1 Else 0 End As fggxx
From wind.tb_object_4516
Left Join wind.tb_object_1673 a On f1_1673 = f25_4516) xx On a.zqdm =
xx.f1_4516
And a.zqmc =
xx.f2_4516
-- 取转股比例和转股价格字段
Left Join wind.tb_object_5015 x On a.f43_4516 =x.f2_5015 And x.f3_5015=a.fzgr
--取企业(公司)债券发行人待偿还的企业债券余额
Left Join (Select f40_1429 ,Sum(f3_1640*10000) Ffxrdchqyz From wind.tb_object_1429,wind.tb_object_1640 Where (F30_1429> to_char(&PlanTime-1,'yyyymmdd') Or F30_1429 Is Null)
And F1_1640=F1_1429
Group By f40_1429) yy On a.f40_1429=yy.f40_1429
)
优化笔记:jsyhjkzqxx_D_20140916.gz的更多相关文章
- 优化笔记: jxrsfxrxx_D_20140916.gz
表的重复扫描. ----------------------------------想进一步研究,继续往下看------------------------------ 1. 所有相似 ...
- 优化笔记:pfyhparopenfundinfotest_D_20140916.gz
性能瓶颈在函数的乱用.原代码黄色部分. 12分钟->35秒 ------------------------------------------------------------------- ...
- Android App性能优化笔记之一:性能优化是什么及为什么?
By Long Luo 周星驰的电影<功夫>里面借火云邪神之口说出了一句至理名言:“天下武功,唯快不破”. 在移动互联网时代,同样如此,留给一个公司的窗口往往只有很短的时间,如何把握住 ...
- (转)MySQL优化笔记(八)--锁机制超详细解析(锁分类、事务并发、引擎并发控制)
当一个系统访问量上来的时候,不只是数据库性能瓶颈问题了,数据库数据安全也会浮现,这时候合理使用数据库锁机制就显得异常重要了. 原文:http://www.jianshu.com/p/163c96983 ...
- U3D开发性能优化笔记(待增加版本.x)
http://blog.csdn.net/kaitiren/article/details/45071997 此总结由自己经验及网上收集整理优化内容 包括: .代码方面: .函数使用方面: .ui注意 ...
- CMU Convex Optimization(凸优化)笔记1--凸集和凸函数
CMU凸优化笔记--凸集和凸函数 结束了一段时间的学习任务,于是打算做个总结.主要内容都是基于CMU的Ryan Tibshirani开设的Convex Optimization课程做的笔记.这里只摘了 ...
- 移动web性能优化笔记
移动web性能优化 最近看了一些文章,对移动web性能优化方法,做一个简单笔记 笔记内容主要出自 移动H5前端性能优化指南和移动前端系列——移动页面性能优化
- mysql系列十一、mysql优化笔记:表设计、sql优化、配置优化
可以从这些方面进行优化: 数据库(表)设计合理 SQL语句优化 数据库配置优化 系统层.硬件层优化 数据库设计 关系数据库三范式 1NF:字段不可分; 2NF:有主键,非主键字段依赖主键; 3NF:非 ...
- nginx优化笔记(keepalive、https等)
一.nginx之tcp_nopush.tcp_nodelay.sendfile 1.TCP_NODELAY你怎么可以强制 socket 在它的缓冲区里发送数据?一个解决方案是 TCP 堆栈的 TCP_ ...
随机推荐
- CentOS 7常用工具安装
git 在Linux下开发项目,少不了要使用git工具,安装方法十分简单,通过一条 yum 指令既可完成安装: yum install git 安装完成后检测版本: # git --version g ...
- 访问路径、URL、资源加载、转码、 btn的设置、枚举
一.URL 1.什么是URL? URL是某个资源的唯一路径,通过这个路径就能访问对应的资源 2.URL的组成 协议头://全路径 * 协议头就代表资源的类型,比如http代表网络服务器资源,ftp代表 ...
- stm32寄存器版学习笔记01 GPIO口的配置(LED、按键)
STM32的I/O口可以由软件配置成如下8种模式:输入浮空.输入上拉.输入下拉.模拟输入.开漏输出.推挽输出.推挽式复用功能及开漏复用功能.每个I/O口由7个寄存器来控制:配置模式的端口配置寄存器CR ...
- bzoj 4827 礼物
bzoj 4827 礼物 可以看做将其中一个数列(假定为 \(a\) )都加上 \(c\) , \(c\) 可以为负数.易知这里 \(-m\leq c\leq m\). 记要求的答案为 \(ans\) ...
- BZOJ3325 [Scoi2013]密码【Manacher】【构造】【贪心】
Description Fish是一条生活在海里的鱼.有一天他很无聊,就到处去寻宝.他找到了位于海底深处的宫殿,但是一扇带有密码锁的大门却阻止了他的前进.通过翻阅古籍,Fish 得知了这个密码的相关信 ...
- BZOJ2120 数颜色 【带修莫队】
BZOJ2120 数颜色 Description 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会像你发布如下指令: 1. Q L R代表询问你从第L支画笔到 ...
- 完美解决github访问速度慢[转]
1. 修改本地hosts文件 windows系统的hosts文件的位置如下:C:\Windows\System32\drivers\etc\hosts mac/linux系统的hosts文件的位置如下 ...
- 看了redis想一下
redis总结 要想在python中使用redis,要先在本地安装redis,并开启redis-server,然后再导入python的redis包,pip install redis 怎么在Linux ...
- 使用 commander && inquirer 构建专业的node cli
备注: 比较简单就是使用nodejs 的两个类库帮助我们进行开发而已,具体的使用参考类库文档 1. 项目初始化 a. 安装依赖 yarn init -y yarn add commander in ...
- 部署coredns
1 前提: 1.1不依赖kubeadm的方式,适用于不是使用kubeadm创建的k8s集群,或者kubeadm初始化集群之后,删除了dns相关部署. 1.2 DNS IP :10 ...