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

需求:对一组投票日志文件进行日汇总统计,统计出当天所有被投票人的各种类型票数。
并将结果放到另外的一张表中。日志文件中有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不能有分组统计的处理。所以我们
将分组统计模块给屏蔽了。

 

 

 

 

 

 

 

转载于:https://my.oschina.net/abcijkxyz/blog/722066

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值