本站不再更新,欢迎光临 java开发技术网
随笔-230  评论-230  文章-8  trackbacks-0
这两天写的SQL使用到了联机分析函数,自己之前完全没使用过!
参考了以下blog
http://xsb.itpub.net/post/419/33028

http://www.cnblogs.com/sunsonbaby/archive/2004/09/29/47876.aspx

这两篇博客介绍得最详细!!现学现用,感觉挺好

select  E.地区,E.彩种,E.时段, E.销售票数, E.销售金额,E.销售增长率,E.本次销售排名,E.本次增长率排名,E.上次销量,E.上次销量排名,E.上上次销量,E.上次增长率排名,(E.本次增长率排名-E.上次销量排名)销售排名走势,(E.本次增长率排名-E.上次增长率排名)增长率走势  from 

(
Select A.地区,
       A.彩种,
       A.时段,
       A.销售票数,
       A.销售金额,
       decode(A.上次销量,
0,'0%',round( ((A.销售金额 - A.上次销量) / A.上次销量) * 1002|| '%' )销售增长率,
       rank() 
over(order by A.销售金额 desc) 本次销售排名,
       rank() 
over(order by decode(A.上次销量,0,0,round(((A.销售金额 - A.上次销量) / A.上次销量) * 1002)) desc) 本次增长率排名,
       A.上次销量, 
--A.上次销量,
       rank() over(order by A.上次销量 desc) 上次销量排名,
       A.上上次销量,
--上上次销量
       rank() over(order by decode(A.上上次销量,0,0,round(((A.销售金额 - A.上次销量) / A.上次销量) * 1002)) desc )上次增长率排名
       
  
from (select C.AREA_NAME 地区,
               D.Playtype_Name 彩种,
               to_char(open_result_time, 
'yyyy-mm') 时段,
            
               
sum(A.sell_count) 销售票数,
               
sum(A.sell_amount) 销售金额,
               lag(
sum(A.Sell_Amount), 10over(partition by AREA_NAME,Playtype_Name order by to_char(open_result_time, 'yyyy-mm')) 上次销量,
               lag(
sum(A.Sell_Amount), 20over(partition by AREA_NAME ,Playtype_Name order by  to_char(open_result_time, 'yyyy-mm')) 上上次销量
          
from terminal_sell A, SALES_OUTLETS_INFO B, area C, playtype D
        
         
where D.PLAYTYPE_ID(+= A.Lottery_Type
           
and C.AREA_ID(+= B.Area_Id
           
and B.Sell_Id(+= A.Terminal_Sell_Id
         
group by AREA_NAME,Playtype_Name ,to_char(open_result_time, 'yyyy-mm')
        
        ) A
 ) E   
   

imp omas/omas@omas fromuser=omas touser=omas  IGNORE=Y      file=c:\\anhui_sellData080520.dmp
posted on 2007-11-29 15:32 有猫相伴的日子 阅读(383) 评论(0)  编辑  收藏 所属分类: pl/sql

只有注册用户登录后才能发表评论。


网站导航:
 
本站不再更新,欢迎光临 java开发技术网