资源描述:
《几种分析函数的使用方法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、几种常用分析函数的使用方法几种常用的分析函数如上所示。下面将以下表为例对使用方法进行演示。表名:tmp_userarea_codeserv_numbertotal_fee370139037000021003711360766000280370139037000012003711360766000380370139037000035037113607660001280Rank/Dense_rank/Row_number求排名first/last求最前最后一名NTILE/WIDTH_DUCKET求结果分组CUME_DIST/PERCENT_RANK求排名占比WITHINGROUP求某值的排名
2、Selecta.*,rank()over(partitionbyarea_codeorderbytotal_fee)id1,dense_rank()over(partitionbyarea_codeorderbytotal_fee)id2,row_number()over(partitionbyarea_codeorderbytotal_fee)id3fromtmp_useraRank/Dense_rank/Row_numberAREA_CODESERV_NUMBERTOTAL_FEEID1ID2ID337013903700003501113701390370000210022237
3、0139037000012003333711360766000280111371136076600038011237113607660001280323上面语句分别用三个函数展示了每个用户按消费额在该地市的排名。Rank和dense_rank对于相同的值都采用相同的排名,但是rank会跳过接下来的若干名次,而dense_rank不会。Row_number则不会出现相同的名次,对于相同的值的排序是任意的。Partitonby的功能是将结果集分组,该项也可不用。以上示例是按照地市分组。分组排序应用示例上面语句取各地市消费最高的用户Selectarea_code,serv_number,tot
4、al_feefrom(Selecta.*,rank()over(partitionbyarea_codeorderbytotal_feedesc)idfromtmp_usera)whereid=13701390370000120037113607660001280first/lastSelectarea_code,min(SERV_NUMBER)keep(dense_ranklastorderbytotal_fee)idfromtmp_useragroupbyarea_code3701390370000137113607660001该语句功能为获取各地市消费最高的用户。Min(serv_
5、number)是指在排名相同时,取较小的号码。该函数使用时必须使用dense_rank。该语句也可写成dense_rankfirstorderbytotal_feedescNTILESelectAREA_CODE,SERV_NUMBER,ntile(3)over(orderbysum(total_fee))idfromtmp_useragroupbyAREA_CODE,SERV_NUMBER370139037000031371136076600021371136076600032370139037000022370139037000013371136076600013NTILE函数将结果
6、集分为几个分区,上面例子显示了消费前三分之一的用户及后三分之一的用户。WIDTH_DUCKETSelectAREA_CODE,SERV_NUMBER,WIDTH_BUCKET(TOTAL_FEE,100,300,3)id,TOTAL_FEEfromtmp_useraWIDTH_DUCKET函数按值的区间来分组。以上按照100~300区间均分为三组。分组值从1开始,遇到不在设定的范围内的值,会自动产生两个组,0和N+1370139037000030503701390370000211003701390370000122003711360766000208037113607660003080
7、371136076600013280CUME_DIST/PERCENT_RANKSelecta.*,DENSE_RANK()over(orderbytotal_fee)ID,CUME_DIST()over(orderbytotal_fee)CUME_DIST,PERCENT_RANK()over(orderbytotal_fee)PERCENT_RANK,1/6,fromtmp_useraCUME_DIST:计算小于或等于当前排名的