公布计算过程,大家都可以做并及时将结果发布
--计算过程
--创建几个表
--存最终结果
create table zsbc2008_3 (
用户名 varchar2(30),
参与次数 number,
下注总金额 number,
收入金额 number,
净值 number,
收入率 number,
获胜次数 number,
胜率 number,
净值除下注总金额 number,
获胜次数除总开盘数 number,
参与次数除总开盘数 number,
总开盘数 number
);
--存临时结果
create table zsbc_temp1 (
用户名 varchar2(30),
参与次数 number,
下注总金额 number,
收入金额 number,
获胜次数 number
);
--存临时结果
create table zsbc_temp2 (
用户名 varchar2(30),
参与次数 number,
下注总金额 number,
收入金额 number,
获胜次数 number
);
--存临时结果
create table szzsbc_temp
(日期 varchar2(8),
用户 varchar2(30),
下注 number,
结果 varchar2(10),
收入 number,
纯收入 number,
原始结果 varchar2(200)
);
1.把上次的统计结果copy到excel文件里,再通过plsql developer,copy到表zsbc2008_3里.
2.将新的nba结果一起copy到一个文件,利用UEDIT的替换功能将所有的原始记录转换成insert语句,格式如下:
insert into szzsbc_temp(原始结果) values ('shiguibao 下注 100PUB币--失败 ');
--替换用的
insert into szzsbc_temp(原始结果) values ('
3.将2的全部insert语句copy到sqlplus里,insert到szzsbc_temp.
4.执行以下语句,对szzsbc_temp做简单的解析
update szzsbc_temp set 原始结果=rtrim(原始结果);
commit;
update szzsbc_temp
set 日期= '200912',
用户=substr(原始结果,1,instr(原始结果,' ',1) - 1),
下注=substr(原始结果,instr(原始结果,'下注',1) + 3,instr(原始结果,'PUB币',1,1) - instr(原始结果,'下注',1,1) - 3 ),
结果=decode(sign(instr(原始结果,'胜出')),1,'成功','失败');
commit;
update szzsbc_temp
set 收入=substr(原始结果,instr(原始结果,'收入',1) + 3,instr(原始结果,'PUB币',1,2) - instr(原始结果,'收入',1,1) - 3 )
where instr(原始结果,'收入') > 0;
commit;
update szzsbc_temp set 收入=0
where instr(原始结果,'收入') = 0;
commit;
update szzsbc_temp set 纯收入= 收入 - 下注;
commit;
5.对szzsbc_temp做简单计算,结果存到zsbc_temp1
truncate table zsbc_temp1;
insert into zsbc_temp1
select 用户,count(*),sum(下注) ,sum(收入),sum(decode(结果,'成功',1,0)) from szzsbc_temp
group by 用户;
commit;
6.处理以前没有下注记录的用户
insert into zsbc2008_3(用户名,参与次数,下注总金额,收入金额,获胜次数)
select 用户名,参与次数,下注总金额,收入金额,获胜次数 from zsbc_temp1 t
where t.用户名 not in (select 用户名 from zsbc2008_3 );
commit;
7,处理有下注记录的用户
truncate table zsbc_temp2;
insert into zsbc_temp2
select t.用户名,t.参与次数 + n.参与次数,t.下注总金额 +n.下注总金额 ,t.收入金额 + n.收入金额,t.获胜次数+n.获胜次数
from zsbc_temp1 t,zsbc2008_3 n where t.用户名 = n.用户名;
commit;
delete from zsbc2008_3 where 用户名 in (select 用户名 from zsbc_temp2 );
commit;
insert into zsbc2008_3(用户名,参与次数,下注总金额,收入金额,获胜次数)
select * from zsbc_temp2 ;
commit;
8.设置总开盘数
update zsbc2008_3 set 总开盘数 = 184;
commit;
9.计算余下的字段
update zsbc2008_3
set 净值=收入金额 - 下注总金额,
收入率 = round((收入金额 - 下注总金额) / 参与次数,4),
胜率 = round(获胜次数 / 参与次数,4),
净值除下注总金额 = round((收入金额 - 下注总金额) / 下注总金额,4),
获胜次数除总开盘数 = round(获胜次数 / 总开盘数,4),
参与次数除总开盘数 = round(参与次数 / 总开盘数,4);
commit;
10. 在toad里执行以下语句,并将结果存成html文件.
select rownum, a.* from
(
select * from zsbc2008_3 where 参与次数除总开盘数 >= 0.5 order by 8 desc
) a;[@more@]
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/936/viewspace-1014545/
,如需转载,请注明出处,否则将追究法律责任。