尝试将两个查询组合到单个查询中以获得性能

时间:2017-11-29 00:31:43

标签: sql database oracle performance optimization

我遇到了Oracle SQL数据库问题,我面临的问题是我正在尝试执行两个聚合操作,但我正在进行两个查询来执行这些操作。我正在扫描同一个表(TableOne)两次。我有一个需要发生的连接才能进行聚合。有没有办法利用case语句一次性完成整个查询?

select PAR, SUM(PLANQUANT) AS VALONE
from
(select ODRP.PAR, ODRP.PLANQUANT from TableOne ODRP
inner join TableTwo LOC 
on ODRP.LOCID = LOC.LOCID and LOC.LOCNAME like '%_USD'
where ODRP.TYPEID IN (5,6)) 
group by PAR;

select PAR, SUM(PLANQUANT) AS VALTWO
from
(select ODRP.PAR, ODRP.PLANQUANT from TableOne ODRP
inner join TableTwo LOC  
on ODRP.LOCID = LOC.LOCID and LOC.LOCNAME like 'BAT_USD'
where ODRP.TYPEID IN (1)) 
group by PAR

我相信这样的查询会以

开头
select PAR, SUM(PLANQUANT) AS VALONE, SUM(PLANQUANT) AS VALTWO
from
(select ODRP.PAR, ODRP.PLANQUANT from TableOne ODRP
inner join TableTwo LOC  
on ODRP.LOCID = LOC.LOCID and LOC.LOCNAME like '%USD'
where ODRP.TYPEID IN (1, 5, 6))

然后我知道我至少在小组中也需要案例陈述,也可能是连接?

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

尝试这样的事情......

syms x y yr
yr= @(x) real(1.2*sin(x)+2*log(x+2)-5); 
fr=fzero(yr,0);

fr =

  6.8458


y= @(x) (1.2*sin(x)+2*log(x+2)-5); 

y(fr)

ans =

  -8.8818e-16

也在CASE语句中添加LOCNAME的条件。我没有意识到这两个查询也有所不同。