select t1.clevel,--排行榜名次
t2.cwaiterid, --营业员编号
count(t2.cvoteresult),--总数
sum(case t2.cvoteresult when '赞成' then 1)/sum(case t2.cvoteresult when '反对' then 1) --比例
from d_service_level t1,d_vote_result t2
where /*两个表的关系,不过你没说清楚*/
group by t1.clevel,t2.cwaiterid

解决方案 »

  1.   

    例如在d_service_level中设置如下规则:ctype   clevel   cvoteresult   ibase   iscale
     D         3         2           10      50
     D         2         4           20      60
     D         1         5           30      80
    ......其中:ctype指排行榜类型(D-每日),clevel指排列等级,cvoteresult指以哪个投票结果为标准来统计(也就是对应d_vote_result表中的cvoteresult),ibase指该投票标准的最低投票数量,iscale指该投票标准占总数的百分比那么,我想从d_vote_result表中统计后得到如下数据:营业员编号     投票类型    数量    百分比    等级
      

  2.   

    --是这个意思吗?select 营业员编号=a.cwaiterid,投票类型=b.ctype
    ,数量=ibase,百分比=b.iscale,等级=b.clevel
    from d_vote_result a 
    join d_service_level b on a.cvoteresult=b.cvoteresult
      

  3.   

    d_vote_result表中的数据已经有了,我是想把d_vote_result表中的数据按照cwaiterid和cvoteresult统计之后(主要统计营业员编号、投票类型、数量、百分比),然后与d_service_level设置的规则比较,看每类投票类型是否能够上排行榜