重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
我以前做kpi的时候也遇到这种需求,非要在数据库里算出来
创新互联长期为上千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为濉溪企业提供专业的成都做网站、网站设计,濉溪网站改版等技术服务。拥有十载丰富建站经验和众多成功案例,为您定制开发。
我的解决方案是大量设置视图,把每一种子计算都设为视图,就是说,数据库里会出现大量视图,但是每个计算都是原子计算
什么是整除?如果是5/3那么得数应该是1,你要的是1吧。
直接trunc就可以,如果还要余数,那么就是5%3就可以了。
select (select count(*) as a from...)/(select count(*) as b from...
) from dual
假设table名称为t1,如要把(B-A)/B的结果赋给C,则用下面语句:
update t1 set C=(B-A)/B;
如要经过条件筛选更新,则可定义一个游标,逐条处理。
--简单循环
declare
c number(3):=1;
begin
loop
if mod(c,7)=0 then
dbms_output.put_line(c);
end if;
c:=c+1;
exit when c100;
end loop;
end;
--FOR循环
begin
for x in (select level from dual where mod(level,7)=0 connect by level=100 ) loop
dbms_output.put_line(x.level);
end loop;
end;
--while
declare
c number(3) := 1;
begin
while c = 100 loop
if mod(c, 7) = 0 then
dbms_output.put_line(c);
end if;
c := c + 1;
end loop;
end;
select round(a/b,2) from table where c='T';
以上SLQ语句为,
从表table中查询符合c字段值为‘T’的值,
并将值a除以b,得到的结果如果包含小数,则保留两位小数点。
函数round(x[,y])介绍:
【功能】返回四舍五入后的值
【参数】x,y,数字型表达式,如果y不为整数则截取y整数部分,如果y0则四舍五入为y位小数,如果y小于0则四舍五入到小数点向左第y位。
【返回】数字
与此函数相近的函数是trunc(x[,y]) ,返回截取后的值,用法同round(x[,y]),只是不四舍五入