项目中复合指标由配置好的基础指标公式解析后存到如下一张表中:
--Create table
create table TESTRRT
(
complexid NUMBER not null,--复合指标id
basicid VARCHAR2(20) not null,--基础指标id
chu VARCHAR2(20),--除法标示(a为分子,b为分母)
plus VARCHAR2(20),--乘法标示
direction NUMBER,--计算方向(1为正2为负)
value NUMBER
)
复合指标1:(1001+1003)/(1002-1004)=-12
复合指标2:1006*1007/(2011+2022)=1.5
复合指标3:1009*1010/1011=0.5
--单独除法关系的指标
select t.complexid,
decode(sum(case
when t.chu = 'b' and t.direction = 1 then
t.VALUE
when t.chu = 'b' and t.direction = 2 then
-t.VALUE
end),
0,
0,
sum(case
when t.chu = 'a' and t.direction = 1 then
t.VALUE
when t.chu = 'a' and t.direction = 2 then
-t.VALUE
end) / sum(case
when t.chu = 'b' and t.direction = 1 then
t.VALUE
when t.chu = 'b' and t.direction = 2 then
-t.VALUE
end))
from testrrt t
where t.complexid = 1
group by t.complexid
网上查找相关资料表明,
http://blog.sina.com.cn/s/blog_63f3c0b201015gh9.htmloracle的累乘用法已经被很多人使用过啦。
exp(y)
【功能】返回e的y次幂(e为数学常量)
【参数】y,数字型表达式
ln(y)
【功能】返回e为底的自然对数。
由于ln对应的y参数仅可为正数,所以如下进行连乘的方法只能针对正数,不包含负数哦~
--先乘后除指标【累乘算法:exp(ln(a)+ln(b)+ln(c))=a*b*c】
select t.complexid,
decode(exp(sum(ln(case
when t.plus = 'p' and t.chu = 'b' then
t.value
end))),0,0,exp(sum(ln(case
when t.plus = 'p' and t.chu = 'a' then
t.value
end)))/sum(case
when t.plus is null and t.chu = 'b' then
t.value
end)
)
mvalues
from testrrt t
where t.complexid in (2,3)
group by t.complexid
- 大小: 22.6 KB
- 大小: 32.7 KB
分享到:
相关推荐
oracle最常用的函数或方法总结;oracle最常用的函数或方法总结
在oracle中利用函数实现计算公式解析|在oracle中利用函数实现计算公式解析
清华大学计算中心oracle培训资料,ppt的,有兴趣的可以看看!!好久没传东西了免费给~
通过入参 生日 ,计算日期(默认sysdate),计算年龄 精确到秒
oracle资源监控指标.docx
oracle性能指标详解 oracle性能指标详解 oracle性能指标详解 oracle性能指标详解
清华大学计算中心ORACLE培训资料,清华大学计算中心ORACLE培训资料.
OracleGrid computing 英文版 oracle Grid 分布式计算
Oracle性能测试指标用于查询数据库性能及使用情况
计算oracle的表空间使用情况,sql语句。。。。。
清华大学计算中心ORACLE培训资料,清华大学计算中心ORACLE培训资料
使用oracle ,计算系统当前时间的毫秒数
Oracle数据库的周数计算 日期计算,算第n周的第一天及最后一天是几号。 公式...
NULL 博文链接:https://fanshuyao.iteye.com/blog/2341163
C# 未在本地计算机上注册"OraOLEDB.Oracle"提供程序