您的位置:首页 > 其它

根据字段内容条件的统计需求处理

2016-07-29 00:00 232 查看
需求:对一组投票日志文件进行日汇总统计,统计出当天所有被投票人的各种类型票数。
并将结果放到另外的一张表中。日志文件中有vote_type,vote_mode标识不同的数据类型。
日志表名称:vote_log
vote_type和vote_model的组合为下:
0,0:A类型
0,1:B类型
1,0:C类型
0,2:D类型
sign_up_id:表示被投票人id
vote_time:标识具体投票时间
前提条件:一条log记录相当于一票

具体实施的sql:

insert into 汇总统计表_statics
(
id,
A_vote,
B_vote,
C_vote,
D_vote,
sign_up_id,--被投票人id
datetime
)
select 统计表_seq.nextval,
t.A_vote,
t.B_vote,
t.C_vote,
t.D_vote,
t.sign_up_id,--被投票人
t.datetime
from (
select sum(decode(b.vote_type || b.vote_mode, '00', 1, 0)) A_vote,--A类型
sum(decode(b.vote_type || b.vote_mode, '01', 1, 0)) B_vote,--B类型
sum(decode(b.vote_type || b.vote_mode, '10', 1, 0)) C_vote,--C类型
sum(decode(b.vote_type || b.vote_mode, '02', 1, 0)) D_vote,--D类型
b.sign_up_id sign_up_id,
trunc(b.vote_time) datetime
from vote_log b
where b.vote_time between TRUNC(开始日期) and
TRUNC(结束日期)
group by b.sign_up_id, trunc(b.vote_time)
) t;


知识点总结:

1、对于这种根据字段的具体值来进行统计的数据需要有一个判定各种类型值的处理。这里用decode函数处理
2、因为我们要统计某天的各种类型的投票数量,所以我们需要对被投票人id和日期进行分组,同时我们需要
将各种的投票进行累加。当条件组合是某一种类型的时候,当前类型加一,其他的就累加数字零。
3、为啥select套select,因为直接使用insert into,要求他后边的select不能有分组统计的处理。所以我们
将分组统计模块给屏蔽了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: