郵件圖圖片實(shí)時(shí)數(shù)據(jù)

測(cè)試期間實(shí)時(shí)數(shù)據(jù).png

1.第一個(gè)圖片的SQL

SELECT a.channelid,sum(a.devs) as "新增設(shè)備"
            ,b.dnewdevsTB as "新增設(shè)備環(huán)比"
      ,sum(a.users) as "新增用戶",sum(a.logdevs) as"登錄設(shè)備",(sum(a.logdevs) -sum(a.devs)) as "活躍設(shè)備",(sum(a.logusers) -sum(a.users) ) as "活躍用戶"
      ,b.dlogindevsTb as "登錄設(shè)備環(huán)比"                  -- 
      ,sum(a.logusers) as "登錄用戶",sum(a.payusers) as "付費(fèi)人數(shù)",sum(a.pay) as "付費(fèi)金額" 
            ,b.payTb as  "付費(fèi)金額環(huán)比"
      ,concat(round(sum(a.payusers)/sum(a.logusers)*100,0),"%")   as "付費(fèi)率",round(sum(a.pay)/sum(a.payusers),2) as "ARPPU" ,round(sum(a.pay)/sum(a.logusers),2) as "ARPU"
 
FROM 
    -- 計(jì)算基本數(shù)據(jù)
        (
        SELECT channelid,SUM(dnewdevs) as devs ,SUM(dnewusers) as users ,SUM(dlogindevs) as logdevs, SUM(dloginusers) as logusers,SUM(payusers) as payusers,SUM(pay) as pay
            FROM realinfo  
         WHERE channelid in(select channelid from allchannel_bak )  
             AND basicdate = DATE_ADD(CURDATE(),INTERVAL HOUR(NOW()) HOUR)
         GROUP BY channelid 
         ) as a   
left  JOIN  
        -- 計(jì)算環(huán)比數(shù)據(jù) 
     (SELECT a.channelid
                    ,ifnull(concat(round((  (sum(a.devs)-sum(b.devs))/(sum(b.devs)-sum(c.devs))-1 )*100,0),"%"),"-") as dnewdevsTB
                    ,ifnull(concat(round(((sum(a.logdevs)-sum(b.logdevs))/(sum(b.logdevs)-sum(c.logdevs))-1)*100,0),"%"),"-")  AS dlogindevsTb
                    ,ifnull(concat(round(((sum(a.pay)-sum(b.pay))/(sum(b.pay)-sum(c.pay))-1)*100,0),"%"),"-")  as payTb
        from 
                 (SELECT channelid,SUM(dnewdevs) as devs  ,SUM(dlogindevs) as logdevs,SUM(pay) as pay
                     FROM realinfo  
                     WHERE basicdate =DATE_ADD(CURDATE(),INTERVAL HOUR(NOW()) HOUR)
                    and channelid in(select channelid from allchannel_bak  )  
                   GROUP BY channelid having sum(dlogindevs)>0
                    ) as a left join
                 (SELECT channelid,SUM(dnewdevs) as devs  ,SUM(dlogindevs) as logdevs,SUM(pay) as pay
                      FROM realinfo  
                     WHERE basicdate =DATE_ADD(CURDATE(),INTERVAL HOUR(NOW())-1 HOUR)
                     and channelid in(select channelid from allchannel_bak  )  
                   GROUP BY channelid
                 ) as b on a.channelid=b.channelid  left join
                 (SELECT channelid,SUM(dnewdevs) as devs  ,SUM(dlogindevs) as logdevs,SUM(pay) as pay
                     FROM realinfo  
                    WHERE  basicdate =DATE_ADD(CURDATE(),INTERVAL HOUR(NOW())-2 HOUR)
                    and channelid in(select channelid from allchannel_bak  )  
                  GROUP BY channelid
                 ) as c on a.channelid=c.channelid  
            group by a.channelid) b
on a.channelid=b.channelid  
 GROUP BY a.channelid

2.計(jì)算分渠道實(shí)時(shí)留存的數(shù)據(jù)

SELECT a.channelid,sum(a.devs) as "新增設(shè)備"
            ,b.dnewdevsTB as "新增設(shè)備環(huán)比"
      ,sum(a.users) as "新增用戶",sum(a.logdevs) as"登錄設(shè)備",(sum(a.logdevs) -sum(a.devs)) as "活躍設(shè)備",(sum(a.logusers) -sum(a.users) ) as "活躍用戶"
      ,b.dlogindevsTb as "登錄設(shè)備環(huán)比"                  -- 
      ,sum(a.logusers) as "登錄用戶",sum(a.payusers) as "付費(fèi)人數(shù)",sum(a.pay) as "付費(fèi)金額" 
            ,b.payTb as  "付費(fèi)金額環(huán)比"
      ,concat(round(sum(a.payusers)/sum(a.logusers)*100,0),"%")   as "付費(fèi)率",round(sum(a.pay)/sum(a.payusers),2) as "ARPPU" ,round(sum(a.pay)/sum(a.logusers),2) as "ARPU"
      ,c.u1remainratio,c.u2remainratio,c.u3remainratio,c.u4remainratio,c.u5remainratio,c.u6remainratio,c.u7remainratio
FROM 
    -- 計(jì)算基本數(shù)據(jù)
        (
        SELECT channelid,SUM(dnewdevs) as devs ,SUM(dnewusers) as users ,SUM(dlogindevs) as logdevs, SUM(dloginusers) as logusers,SUM(payusers) as payusers,SUM(pay) as pay
            FROM realinfo  
         WHERE channelid in(select channelid from allchannel_bak )  
             AND basicdate = DATE_ADD(CURDATE(),INTERVAL HOUR(NOW()) HOUR)
         GROUP BY channelid 
         ) as a   
left  JOIN  
        -- 計(jì)算環(huán)比數(shù)據(jù) 
     (SELECT a.channelid
                    ,ifnull(concat(round((  (sum(a.devs)-sum(b.devs))/(sum(b.devs)-sum(c.devs))-1 )*100,0),"%"),"-") as dnewdevsTB
                    ,ifnull(concat(round(((sum(a.logdevs)-sum(b.logdevs))/(sum(b.logdevs)-sum(c.logdevs))-1)*100,0),"%"),"-")  AS dlogindevsTb
                    ,ifnull(concat(round(((sum(a.pay)-sum(b.pay))/(sum(b.pay)-sum(c.pay))-1)*100,0),"%"),"-")  as payTb
        from 
                 (SELECT channelid,SUM(dnewdevs) as devs  ,SUM(dlogindevs) as logdevs,SUM(pay) as pay
                     FROM realinfo  
                     WHERE basicdate =DATE_ADD(CURDATE(),INTERVAL HOUR(NOW()) HOUR)
                    and channelid in(select channelid from allchannel_bak  )  
                   GROUP BY channelid having sum(dlogindevs)>0
                    ) as a left join
                 (SELECT channelid,SUM(dnewdevs) as devs  ,SUM(dlogindevs) as logdevs,SUM(pay) as pay
                      FROM realinfo  
                     WHERE basicdate =DATE_ADD(CURDATE(),INTERVAL HOUR(NOW())-1 HOUR)
                     and channelid in(select channelid from allchannel_bak  )  
                   GROUP BY channelid
                 ) as b on a.channelid=b.channelid  left join
                 (SELECT channelid,SUM(dnewdevs) as devs  ,SUM(dlogindevs) as logdevs,SUM(pay) as pay
                     FROM realinfo  
                    WHERE  basicdate =DATE_ADD(CURDATE(),INTERVAL HOUR(NOW())-2 HOUR)
                    and channelid in(select channelid from allchannel_bak  )  
                  GROUP BY channelid
                 ) as c on a.channelid=c.channelid  
            group by a.channelid) b
on a.channelid=b.channelid  
         --  計(jì)算留存的數(shù)據(jù)
 LEFT JOIN  
 (SELECT b.channelid ,u1remainratio -- ,u1remain,u1dnewdevs 
                    ,u2remainratio-- ,u2remain,u2dnewdevs 
                                        ,u3remainratio-- , u3remain,u3dnewdevs 
                                      ,u4remainratio-- , u4remain,u4dnewdevs 
                                        ,u5remainratio-- , u5remain,u5dnewdevs 
                                        ,u6remainratio-- ,u6remain,u6dnewdevs 
                                        ,u7remainratio-- ,u7remain,u7dnewdevs 
 FROM  
    (SELECT channelid,ROUND(IFNULL(SUM(usr1remain)/SUM(dnewdevs),0)*100,2) u1remainratio,IFNULL(SUM(usr1remain),0) u1remain,IFNULL(SUM(dnewdevs),0) u1dnewdevs  
             FROM serverinfo  
             WHERE basicdate >= '2018-09-14' AND basicdate < DATE_SUB(CURDATE(),INTERVAL IF(HOUR(NOW())=0,2,1) DAY)  and channelid in(select channelid from allchannel_bak )  
             GROUP BY channelid) b 
LEFT JOIN  
             (SELECT channelid,ROUND(IFNULL(SUM(usr3remain)/SUM(dnewdevs),0)*100,2) u3remainratio,IFNULL(SUM(usr3remain),0) u3remain,IFNULL(SUM(dnewdevs),0) u3dnewdevs  
             FROM serverinfo  
             WHERE basicdate >= '2018-09-14' AND basicdate < DATE_SUB(CURDATE(),INTERVAL IF(HOUR(NOW())=0,4,3) DAY)  and channelid in(select channelid from allchannel_bak ) 
             GROUP BY channelid) c ON b.channelid = c.channelid 
LEFT JOIN
             (SELECT channelid,ROUND(IFNULL(SUM(usr7remain)/SUM(dnewdevs),0)*100,2) u7remainratio,IFNULL(SUM(usr7remain),0) u7remain,IFNULL(SUM(dnewdevs),0) u7dnewdevs  
             FROM serverinfo  
             WHERE basicdate >= '2018-09-14' AND basicdate < DATE_SUB(CURDATE(),INTERVAL IF(HOUR(NOW())=0,8,7) DAY)  and channelid in(select channelid from allchannel_bak ) 
             GROUP BY channelid) d ON c.channelid =d.channelid 
 LEFT JOIN      
             (SELECT channelid,ROUND(IFNULL(SUM(usr2remain)/SUM(dnewdevs),0)*100,2) u2remainratio,IFNULL(SUM(usr2remain),0) u2remain,IFNULL(SUM(dnewdevs),0) u2dnewdevs  
             FROM serverinfo  
             WHERE basicdate >= '2018-09-14' AND basicdate < DATE_SUB(CURDATE(),INTERVAL IF(HOUR(NOW())=0,3,2) DAY) and channelid in(select channelid from allchannel_bak ) 
             GROUP BY channelid) e ON b.channelid = e.channelid 
  LEFT JOIN     
             (SELECT channelid,ROUND(IFNULL(SUM(usr4remain)/SUM(dnewdevs),0)*100,2) u4remainratio,IFNULL(SUM(usr4remain),0) u4remain,IFNULL(SUM(dnewdevs),0) u4dnewdevs  
             FROM serverinfo  
             WHERE basicdate >= '2018-09-14' AND basicdate < DATE_SUB(CURDATE(),INTERVAL IF(HOUR(NOW())=0,5,4) DAY) and channelid in(select channelid from allchannel_bak ) 
             GROUP BY channelid) f ON b.channelid = f.channelid 
   LEFT JOIN    
             (SELECT channelid,ROUND(IFNULL(SUM(usr5remain)/SUM(dnewdevs),0)*100,2) u5remainratio,IFNULL(SUM(usr5remain),0) u5remain,IFNULL(SUM(dnewdevs),0) u5dnewdevs  
             FROM serverinfo  
             WHERE basicdate >= '2018-09-14' AND basicdate < DATE_SUB(CURDATE(),INTERVAL IF(HOUR(NOW())=0,6,5) DAY) and channelid in(select channelid from allchannel_bak ) 
             GROUP BY channelid) g ON b.channelid = g.channelid 
    LEFT JOIN   
             (SELECT channelid,ROUND(IFNULL(SUM(usr6remain)/SUM(dnewdevs),0)*100,2) u6remainratio,IFNULL(SUM(usr6remain),0) u6remain,IFNULL(SUM(dnewdevs),0) u6dnewdevs  
             FROM serverinfo  
             WHERE basicdate >= '2018-09-14' AND basicdate < DATE_SUB(CURDATE(),INTERVAL IF(HOUR(NOW())=0,7,6) DAY) and channelid in(select channelid from allchannel_bak ) 
             GROUP BY channelid) h ON b.channelid = h.channelid 
     GROUP BY  b.channelid) as c on a.channelid=c.channelid
 GROUP BY a.channelid ;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容