电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

oracle分析函數(二)

瀏覽:46日期:2023-11-19 19:14:53
2. rank函數的介紹介紹完rollup和cube函數的使用,下面我們來看看rank系列函數的使用方法.問題2.我想查出這幾個月份中各個地區的總話費的排名.Quote: 為了將rank,dense_rank,row_number函數的差別顯示出來,我們對已有的基礎數據做一些修改,將5763的數據改成與5761的數據相同.1;;update t t1 set local_fare = (2;;;;select local_fare from t t23;;;;;where t1.bill_month = t2.bill_month4;;;;;and t1.net_type = t2.net_type5;;;;;and t2.area_code = '5761'6* ) where area_code = '5763'07:19:18 SQL> /8 rows updated.Elapsed: 00:00:00.01我們先使用rank函數來計算各個地區的話費排名.07:34:19 SQL> select area_code,sum(local_fare) local_fare,07:35:25;;;2;;;;rank() over (order by sum(local_fare) desc) fare_rank07:35:44;;;3;;from t07:35:45;;;4;;group by area_codee07:35:50;;;507:35:52 SQL> select area_code,sum(local_fare) local_fare,07:36:02;;;2;;;;rank() over (order by sum(local_fare) desc) fare_rank07:36:20;;;3;;from t07:36:21;;;4;;group by area_code07:36:25;;;5;;/AREA_CODE;;;;;;LOCAL_FARE;;FARE_RANK---------- -------------- ----------5765;;;;104548.72;;15761;;;;;54225.41;;25763;;;;;54225.41;;2 5764;;;;;53156.77;;4 5762;;;;;52039.62;;5Elapsed: 00:00:00.01我們可以看到紅色標注的地方出現了,跳位,排名3沒有出現下面我們再看看dense_rank查詢的結果.07:36:26 SQL> select area_code,sum(local_fare) local_fare,07:39:16;;;2;;;;dense_rank() over (order by sum(local_fare) desc ) fare_rank07:39:39;;;3;;from t07:39:42;;;4;;group by area_code07:39:46;;;5;;/AREA_CODE;;;;;;LOCAL_FARE;;FARE_RANK---------- -------------- ----------5765;;;;104548.72;;1 5761;;;;;54225.41;;25763;;;;;54225.41;;25764;;;;;53156.77;;3;;這是這里出現了第三名5762;;;;;52039.62;;4Elapsed: 00:00:00.00在這個例子中,出現了一個第三名,這就是rank和dense_rank的差別,rank假如出現兩個相同的數據,那么后面的數據就會直接跳過這個排名,而dense_rank則不會,差別更大的是,row_number哪怕是兩個數據完全相同,排名也會不一樣,這個特性在我們想找出對應沒個條件的唯一記錄的時候又很大用處1;;select area_code,sum(local_fare) local_fare,2;;;;;row_number() over (order by sum(local_fare) desc ) fare_rank3;;from t4* group by area_code07:44:50 SQL> /AREA_CODE;;;;;;LOCAL_FARE;;FARE_RANK---------- -------------- ----------5765;;;;104548.72;;15761;;;;;54225.41;;25763;;;;;54225.41;;35764;;;;;53156.77;;45762;;;;;52039.62;;5在row_nubmer函數中,我們發現,哪怕sum(local_fare)完全相同,我們還是得到了不一樣排名,我們可以利用這個特性剔除數據庫中的重復記錄.這個帖子中的幾個例子是為了說明這三個函數的基本用法的. 下個帖子我們將具體介紹他們的一些用法.2. rank函數的介紹a. 取出數據庫中最后入網的n個用戶select user_id,tele_num,user_name,user_status,create_date from (select user_id,tele_num,user_name,user_status,create_date,rank() over (order by create_date desc) add_rankfrom user_info)where add_rank <= :n;b.根據object_name刪除數據庫中的重復記錄create table t as select obj#,name from sys.obj$;再insert into t1 select * from t1 數次.delete from t1 where rowid in (select row_id from (select rowid row_id,row_number() over (partition by obj# order by rowid ) rn) where rn <> 1);c. 取出各地區的話費收入在各個月份排名.SQL> select bill_month,area_code,sum(local_fare) local_fare,2;;;;;rank() over (partition by bill_month order by sum(local_fare) desc) area_rank ;;3;;from t4;;group by bill_month,area_code5;;/BILL_MONTH;;;;;;AREA_CODE;;;LOCAL_FARE;;AREA_RANK--------------- --------------- -------------- ----------200405;;5765;;25057.74;;1200405;;5761;;13060.43;;2200405;;5763;;13060.43;;2200405;;5762;;12643.79;;4200405;;5764;;12487.79;;5200406;;5765;;26058.46;;1200406;;5761;;13318.93;;2200406;;5763;;13318.93;;2200406;;5764;;13295.19;;4200406;;5762;;12795.06;;5200407;;5765;;26301.88;;1 200407;;5761;;13710.27;;2200407;;5763;;13710.27;;2200407;;5764;;13444.09;;4200407;;5762;;13224.30;;5200408;;5765;;27130.64;;1200408;;5761;;14135.78;;2200408;;5763;;14135.78;;2200408;;5764;;13929.69;;4200408;;5762;;13376.47;;520 rows selected.SQL>3. lag和lead函數介紹取出每個月的上個月和下個月的話費總額1;;select area_code,bill_month, local_fare cur_local_fare,2;;;;;lag(local_fare,2,0) over (partition by area_code order by bill_month ) pre_local_fare,3;;;;;lag(local_fare,1,0) over (partition by area_code order by bill_month ) last_local_fare,4;;;;;lead(local_fare,1,0) over (partition by area_code order by bill_month ) next_local_fare,5;;;;;lead(local_fare,2,0) over (partition by area_code order by bill_month ) post_local_fare6;;from (7;;;;;select area_code,bill_month,sum(local_fare) local_fare ;;8;;;;;from t9;;;;;group by area_code,bill_month10* )SQL> /AREA_CODE BILL_MONTH CUR_LOCAL_FARE PRE_LOCAL_FARE LAST_LOCAL_FARE NEXT_LOCAL_FARE POST_LOCAL_FARE--------- ---------- -------------- -------------- --------------- --------------- ---------------5761;;;;;;200405;;13060.433;;;;;;0;;;;;;;013318.93;;;;;;;13710.2655761;;;;;;200406;;;13318.93;;;;;;0;;;;;;;13060.433;;;;;;;13710.265;;;;;;;14135.7815761;;;;;;200407;;13710.265;;;;;;13060.43313318.93;;;;;;;14135.781;;;;;;;05761;;;;;;200408;;14135.781;;;;;;;13318.93;;;;;;;13710.265;;;;;;;0;;;;;;;05762;;;;;;200405;;12643.791;;;;;;0;;;;;;;012795.06;;;;;;;13224.2975762;;;;;;200406;;;12795.06;;;;;;0;;;;;;;12643.791;;;;;;;13224.297;;;;;;;13376.4685762;;;;;;200407;;13224.297;;;;;;12643.79112795.06;;;;;;;13376.468;;;;;;;0 5762;;;;;;200408;;13376.468;;;;;;;12795.06;;;;;;;13224.297;;;;;;;0;;;;;;;05763;;;;;;200405;;13060.433;;;;;;0;;;;;;;013318.93;;;;;;;13710.2655763;;;;;;200406;;;13318.93;;;;;;0;;;;;;;13060.433;;;;;;;13710.265;;;;;;;14135.7815763;;;;;;200407;;13710.265;;;;;;13060.43313318.93;;;;;;;14135.781;;;;;;;05763;;;;;;200408;;14135.781;;;;;;;13318.93;;;;;;;13710.265;;;;;;;0;;;;;;;05764;;;;;;200405;;12487.791;;;;;;0;;;;;;;0;;;;;;;13295.187;;;;;;;13444.0935764;;;;;;200406;;13295.187;;;;;;0;;;;;;;12487.791;;;;;;;13444.093;;;;;;;13929.6945764;;;;;;200407;;13444.093;;;;;;12487.791;;;;;;;13295.187;;;;;;;13929.694;;;;;;;0 5764;;;;;;200408;;13929.694;;;;;;13295.187;;;;;;;13444.093;;;;;;;0;;;;;;;05765;;;;;;200405;;25057.736;;;;;;0;;;;;;;026058.46;;;;;;;26301.8815765;;;;;;200406;;;26058.46;;;;;;0;;;;;;;25057.736;;;;;;;26301.881;;;;;;;27130.6385765;;;;;;200407;;26301.881;;;;;;25057.73626058.46;;;;;;;27130.638;;;;;;;05765;;;;;;200408;;27130.638;;;;;;;26058.46;;;;;;;26301.881;;;;;;;0;;;;;;;020 rows selected.利用lag和lead函數,我們可以在同一行中顯示前n行的數據,也可以顯示后n行的數據.4. sum,avg,max,min移動計算數據介紹計算出各個連續3個月的通話費用的平均數1;;select area_code,bill_month, local_fare,2;;;;;sum(local_fare)3;;;;;over (;;partition by area_code4;;;;;order by to_number(bill_month)5;;;;;range between 1 preceding and 1 following ) '3month_sum',6;;;;;avg(local_fare)7;;;;;over (;;partition by area_code8;;;;;order by to_number(bill_month) ;;9;;;;;range between 1 preceding and 1 following ) '3month_avg',10;;;;;max(local_fare)11;;;;;over (;;partition by area_code12;;;;;order by to_number(bill_month)13;;;;;range between 1 preceding and 1 following ) '3month_max',14;;;;;min(local_fare)15;;;;;over (;;partition by area_code16;;;;;order by to_number(bill_month)17;;;;;range between 1 preceding and 1 following ) '3month_min'18;;from (19;;;;;select area_code,bill_month,sum(local_fare) local_fare20;;;;;from t21;;;;;group by area_code,bill_month22* )SQL> /AREA_CODE BILL_MONTH;;;;;;;LOCAL_FARE 3month_sum 3month_avg 3month_max 3month_min--------- ---------- ---------------- ---------- ---------- ---------- ----------5761;;;;;;200405;;;;13060.433;;26379.363 13189.6815;;;13318.93;;13060.4335761;;;;;;200406;;;;13318.930;;40089.628 13363.2093;;13710.265;;13060.4335761;;;;;;200407;;;;13710.265;;41164.976 13721.6587;;14135.781;;;13318.9340089.628 = 13060.433 + 13318.930 + 13710.26513363.2093 = (13060.433 + 13318.930 + 13710.265) / 313710.265 = max(13060.433 + 13318.930 + 13710.265)13060.433 = min(13060.433 + 13318.930 + 13710.265)5761;;;;;;200408;;;;14135.781;;27846.046;;13923.023;;14135.781;;13710.2655762;;;;;;200405;;;;12643.791;;25438.851 12719.4255;;;12795.06;;12643.7915762;;;;;;200406;;;;12795.060;;38663.148;;12887.716;;13224.297;;12643.791 5762;;;;;;200407;;;;13224.297;;39395.825 13131.9417;;13376.468;;;12795.065762;;;;;;200408;;;;13376.468;;26600.765 13300.3825;;13376.468;;13224.2975763;;;;;;200405;;;;13060.433;;26379.363 13189.6815;;;13318.93;;13060.4335763;;;;;;200406;;;;13318.930;;40089.628 13363.2093;;13710.265;;13060.4335763;;;;;;200407;;;;13710.265;;41164.976 13721.6587;;14135.781;;;13318.935763;;;;;;200408;;;;14135.781;;27846.046;;13923.023;;14135.781;;13710.2655764;;;;;;200405;;;;12487.791;;25782.978;;12891.489;;13295.187;;12487.7915764;;;;;;200406;;;;13295.187;;39227.071 13075.6903;;13444.093;;12487.7915764;;;;;;200407;;;;13444.093;;40668.974 13556.3247;;13929.694;;13295.1875764;;;;;;200408;;;;13929.694;;27373.787 13686.8935;;13929.694;;13444.0935765;;;;;;200405;;;;25057.736;;51116.196;;25558.098;;;26058.46;;25057.7365765;;;;;;200406;;;;26058.460;;77418.077 25806.0257;;26301.881;;25057.7365765;;;;;;200407;;;;26301.881;;79490.979;;26496.993;;27130.638;;;26058.465765;;;;;;200408;;;;27130.638;;53432.519 26716.2595;;27130.638;;26301.88120 rows selected.5. ratio_to_report函數的介紹 ;;Quote: 1;;select bill_month,area_code,sum(local_fare) local_fare,2;;;;;ratio_to_report(sum(local_fare)) over3;;;;;;;( partition by bill_month ) area_pct4;;from t5* group by bill_month,area_codeSQL> break on bill_month skip 1SQL> compute sum of local_fare on bill_monthSQL> compute sum of area_pct on bill_monthSQL> /BILL_MONTH AREA_CODE;;;;;;;LOCAL_FARE;;;AREA_PCT---------- --------- ---------------- ----------200405;;;;;5761;;;;;13060.433 .1711492795762;;;;;12643.791 .1656894315763;;;;;13060.433 .1711492795764;;;;;12487.791 .1636451435765;;;;;25057.736 .328366866**********;;;---------------- ----------sum;76310.184;;1200406;;;;;5761;;;;;13318.930 .1690507725762;;;;;12795.060 .1624015425763;;;;;13318.930 .1690507725764;;;;;13295.187 .1687494145765;;;;;26058.460 .330747499**********;;;---------------- ----------sum;78786.567;;1 200407;;;;;5761;;;;;13710.265 .1705451975762;;;;;13224.297 .1645001275763;;;;;13710.265 .1705451975764;;;;;13444.093 .1672342215765;;;;;26301.881 .327175257**********;;;---------------- ----------sum;80390.801;;1200408;;;;;5761;;;;;14135.781 .1709111475762;;;;;13376.468 .1617305395763;;;;;14135.781 .1709111475764;;;;;13929.694 .1684194165765;;;;;27130.638 .328027751**********;;;---------------- ----------sum;82708.362;;120 rows selected. 6 first,last函數使用介紹Quote: 取出每月通話費最高和最低的兩個用戶.1;;select bill_month,area_code,sum(local_fare) local_fare,2;;;;;first_value(area_code)3;;;;;over (order by sum(local_fare) desc4;;;;;rows unbounded preceding) firstval,5;;;;;first_value(area_code)6;;;;;over (order by sum(local_fare) asc ;;7;;;;;rows unbounded preceding) lastval8;;from t9;;group by bill_month,area_code10* order by bill_monthSQL> /BILL_MONTH AREA_CODE;;;;;;;LOCAL_FARE FIRSTVALLASTVAL---------- --------- ---------------- --------------- ---------------200405;;;;;5764;;;;;12487.791 5765;;;;5764200405;;;;;5762;;;;;12643.791 5765;;;;5764200405;;;;;5761;;;;;13060.433 5765;;;;5764200405;;;;;5765;;;;;25057.736 5765;;;;5764200405;;;;;5763;;;;;13060.433 5765;;;;5764200406;;;;;5762;;;;;12795.060 5765;;;;5764200406;;;;;5763;;;;;13318.930 5765;;;;5764200406;;;;;5764;;;;;13295.187 5765;;;;5764200406;;;;;5765;;;;;26058.460 5765;;;;5764200406;;;;;5761;;;;;13318.930 5765;;;;5764200407;;;;;5762;;;;;13224.297 5765;;;;5764200407;;;;;5765;;;;;26301.881 5765;;;;5764 200407;;;;;5761;;;;;13710.265 5765;;;;5764200407;;;;;5763;;;;;13710.265 5765;;;;5764200407;;;;;5764;;;;;13444.093 5765;;;;5764200408;;;;;5762;;;;;13376.468 5765;;;;5764200408;;;;;5764;;;;;13929.694 5765;;;;5764200408;;;;;5761;;;;;14135.781 5765;;;;5764200408;;;;;5765;;;;;27130.638 5765;;;;5764200408;;;;;5763;;;;;14135.781 5765;;;;576420 rows selected.
標簽: Oracle 數據庫
主站蜘蛛池模板: 证券新闻,热播美式保罗1984第二部_腾讯1080p-仁爱影院 | 滚塑PE壳体-PE塑料浮球-警示PE浮筒-宁波君益塑业有限公司 | 电子厂招聘_工厂招聘_普工招聘_小时工招聘信息平台-众立方招工网 | 直线模组_滚珠丝杆滑台_模组滑台厂家_万里疆科技 | 拉力测试机|材料拉伸试验机|电子拉力机价格|万能试验机厂家|苏州皖仪实验仪器有限公司 | 隧道风机_DWEX边墙风机_SDS射流风机-绍兴市上虞科瑞风机有限公司 | 吸音板,隔音板,吸音材料,吸音板价格,声学材料 - 佛山诺声吸音板厂家 | 特种电缆厂家-硅橡胶耐高温电缆-耐低温补偿导线-安徽万邦特种电缆有限公司 | 武汉印刷厂-不干胶标签印刷厂-武汉不干胶印刷-武汉标签印刷厂-武汉标签制作 - 善进特种标签印刷厂 | 小型手持气象站-空气负氧离子监测站-多要素微气象传感器-山东天合环境科技有限公司 | 礼仪庆典公司,礼仪策划公司,庆典公司,演出公司,演艺公司,年会酒会,生日寿宴,动工仪式,开工仪式,奠基典礼,商务会议,竣工落成,乔迁揭牌,签约启动-东莞市开门红文化传媒有限公司 | LED太阳能中国结|发光红灯笼|灯杆造型灯|节日灯|太阳能灯笼|LED路灯杆装饰造型灯-北京中海轩光电 | 阁楼货架_阁楼平台_仓库仓储设备_重型货架_广州金铁牛货架厂 | 北京银联移动POS机办理_收银POS机_智能pos机_刷卡机_收银系统_个人POS机-谷骐科技【官网】 | 爱德华真空泵油/罗茨泵维修,爱发科-比其尔产品供应东莞/杭州/上海等全国各地 | 玉米深加工机械,玉米加工设备,玉米加工机械等玉米深加工设备制造商-河南成立粮油机械有限公司 | 合肥网络推广_合肥SEO网站优化-安徽沃龙First | 美侍宠物-专注宠物狗及宠物猫训练|喂养|医疗|繁育|品种|价格 | 南京交通事故律师-专打交通事故的南京律师 | 植筋胶-粘钢胶-碳纤维布-碳纤维板-环氧砂浆-加固材料生产厂家-上海巧力建筑科技有限公司 | 聚氨酯保温钢管_聚氨酯直埋保温管道_聚氨酯发泡保温管厂家-沧州万荣防腐保温管道有限公司 | 【德信自动化】点胶机_全自动点胶机_自动点胶机厂家_塑料热压机_自动螺丝机-深圳市德信自动化设备有限公司 | 耐火浇注料价格-高强高铝-刚玉碳化硅耐磨浇注料厂家【直销】 | 两头忙,井下装载机,伸缩臂装载机,30装载机/铲车,50装载机/铲车厂家_价格-莱州巨浪机械有限公司 | 变压器配件,变压器吸湿器,武强县吉口变压器配件有限公司 | 不锈钢轴流风机,不锈钢电机-许昌光维防爆电机有限公司(原许昌光维特种电机技术有限公司) | 微妙网,专业的动画师、特效师、CG模型设计师网站! - wmiao.com 超声波电磁流量计-液位计-孔板流量计-料位计-江苏信仪自动化仪表有限公司 | 淘气堡_室内儿童乐园_户外无动力儿童游乐设备-高乐迪(北京) | 南昌旅行社_南昌国际旅行社_南昌国旅在线 | 仓储货架_南京货架_钢制托盘_仓储笼_隔离网_环球零件盒_诺力液压车_货架-南京一品仓储设备制造公司 | 不锈钢丸厂家,铝丸,铸钢丸-淄博智源铸造材料有限公司 | 变色龙云 - 打包app_原生app_在线制作平台_短链接_ip查询 | 机构创新组合设计实验台_液压实验台_气动实训台-戴育教仪厂 | 牛奶检测仪-乳成分分析仪-北京海谊 | 优宝-汽车润滑脂-轴承润滑脂-高温齿轮润滑油脂厂家 | 耐火砖厂家,异形耐火砖-山东瑞耐耐火材料厂 | 螺杆泵_中成泵业 | 酒瓶_酒杯_玻璃瓶生产厂家_徐州明政玻璃制品有限公司 | 信阳市建筑勘察设计研究院有限公司 | 深圳标识制作公司-标识标牌厂家-深圳广告标识制作-玟璟广告-深圳市玟璟广告有限公司 | 成都茶楼装修公司 - 会所设计/KTV装修 - 成都朗煜装饰公司 |