资源描述:
《阅读每户 - oracle - 分析函数》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、阅读每户-ORACLE-分析函数
2、-统计方面
3、-公式
4、-Sum()Over([Partitionby][Orderby])
5、-Sum()Over([Partitionby][Orderby]RowsBetweenPrecedingAndFollowing)
6、-Sum()Over([Partitionby][Orderby]RowsBetweenPrecedingAndCurrentRow)
7、-Sum()Over([Partitionby][Orderby]RangeBetweenInterval'''Day'PrecedingAndInterval'''Day'Fol
8、lowing)
9、-例子
10、---创建订单表CREATETABLEorder_record(whoVARCHAR2(30)NOTNULL,wheVARCHAR2(100)NOTNULL,yerNUMBER(4),mohNUMBER(2),total_oradersNUMBER(7),total_salesNUMBER(11,2));SELECTall_sales.*,round(all_sales.sales/all_sales.region_sales,4)*100
11、
12、'%'FROM(SELECTo.whe,o.who,SUM(o.total_sales)sales,S
13、UM(SUM(o.total_sales))over(PARTITIONBYwhe)region_salesFROMorder_recordoGROUPBYwhe,who)all_salesWHEREall_sales.sales>all_sales.region_sales*0.5;
14、-排列方面
15、-公式
16、-Rank()Over([Partitionby][Orderby][NullsFirst/Last])
17、-相同数据排名一致,但下一记录会空出其中的排名
18、-数据排名A1B2B2C4
19、-Dense_rank()Over([Patitionby][Orderby][Nu
20、llsFirst/Last])
21、-相同数据排名一致,之后数据接上一次序继续
22、-数据排名A1B2B2C3
23、-Row_number()Over([Partitionby][Orderby][NullsFirst/Last])
24、-碰到相同数据时不做处理依照记录顺序依次递增
25、-数据排名A1B2B3C4
26、-Ntile()Over([Partitionby][Orderby])
27、-例子
28、-SELECTregion_id,customer_id,sum(customer_sales)total,--按照地区内进行销售总额的排序rank()over(PARTITIONBYregion
29、_idORDERBYSUM(customer_sales)desc)rank,dense_rank()over(PARTITIONBYregion_idORDERBYSUM(customer_sales)desc)dense_rank,row_number()over(PARTITIONBYregion_idORDERBYSUM(customer_sales)desc)row_numberFROMuser_orderGROUPBYregion_id,customer_id;
30、-最大值/最小值查找方面
31、-公式
32、-Min()/Max()Keep(Dense_rankFir
33、st/Last[Partitionby][Orderby])
34、-Ratio_to_report(value)
35、-Ratio_to_report(value)=value/sum(value)
36、-函数允许我们计算每条记录在其对应记录集或其子集中所占的比例
37、-例子
38、---获取各地区订单排名前三的客户,其中空值放置于最后SELECT*FROM(SELECTregion_id,customer_id,SUM(customer_sales)cust_total,SUM(SUM(customer_sales))over(PARTITIONBYregion_id)reg_total
39、,--获取总订单信息--按照区域进行分区,按照订单额度进行排序,其中空值置于最后rank()over(PARTITIONBYregion_idORDERBYSUM(customer_sales)descNULLSLAST)rankFROMuser_orderGROUPBYregion_id,customer_id)WHERErank<=3;--查询订单最多和最少的信息SELECT--MIN用于确保返回唯一记录--KEEP用于告知Oracle保留符合KEEP条件的记录--dense_rank为固定写法,不可更改MIN(customer_id)KEEP(