SELECT decode(b.計劃趟次, 0, 0, round(a.完成車次 / b.計劃趟次, 4))車次完成率
from (select sum(fd.seqnum) 完成車次
from FDISDISPLANLD fd
where fd.routeid = '80001'
and fd.isactive = 1
and (fd.isconfirm = 1 or fd.recstate in (5, 24, 10))
and fd.rectype = '1'
and fd.rundate = trunc(sysdate)) a,
(select sum((f.overtime - f.begintime) * 24 * 60 / intervaltime) + 1 計劃趟次,
f.rundate
from fdisdispatchinterval f
where exists (select 1
from mcsegmentinfogs
where segmentid = f.segmentid
and rundirection = '1')
and f.routeid = '80001'
and f.rundate = trunc(sysdate)
) b
這段sql的執行結果是 0.5
SELECT decode(b.計劃趟次, '0', '0', round(a.完成車次 / b.計劃趟次, 4))車次完成率
from (select sum(fd.seqnum) 完成車次
from FDISDISPLANLD fd
where fd.routeid = '80001'
and fd.isactive = 1
and (fd.isconfirm = 1 or fd.recstate in (5, 24, 10))
and fd.rectype = '1'
and fd.rundate = trunc(sysdate)) a,
(select sum((f.overtime - f.begintime) * 24 * 60 / intervaltime) + 1 計劃趟次,
f.rundate
from fdisdispatchinterval f
where exists (select 1
from mcsegmentinfogs
where segmentid = f.segmentid
and rundirection = '1')
and f.routeid = '80001'
and f.rundate = trunc(sysdate)
) b
這段sql 的執行結果是.5 他倆的區別是第一個0每家單引號,第二個加了單引號 求oracle大佬 告訴我這是什么原因
uj5u.com熱心網友回復:
如果我要是沒猜錯,“計劃趟次”欄位應該是數字型別的,并且是索引。加了引號,導致不走索引,所以執行效率下降。uj5u.com熱心網友回復:
嗯呢?不是吧uj5u.com熱心網友回復:
說明第一個結果是字串,第二個結果是數字。。。uj5u.com熱心網友回復:
對的
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/31341.html
標籤:高級技術
上一篇:各位大佬,怎么把下面sql server 變成 Oracle
下一篇:大佬們看看這個是什么問題
