oracle:分析函数(评级函数、窗口函数等)
1.评级函数:用于等级、百分点、n分片等。
RANK()在出现等级相同的元素时预留为空,DENSE_RANK()不会。 Eg:某产品类型有两个并列第一 RANK():第一二为1,第三位3 DENSE_RANK():第一二为1,第三位2 1 SELECT OVER 需要,括号内为编号顺序 可以通过NULLS LAST、NULLS FIRST控制 RANK() OVER (DESC NULLS LAST) PARTITION BY分组排列顺序 OVER(PARTITION month DESC)
这样,就会按照month 来分,即所需要排列的信息先以month 的值来分组,在分组中排序,各个分组间不干涉 ROLLUP、CUBE、GROUP SETS (只显示小计信息) 与 RANK() 结合使用
反百分比函数:PERCENTILE_DISC(x),PERCENTILE_CONT(x)
ROW_NUMBER()从1开始,为每条记录返回一个数字 SELECT ROW_NUMBER() OVER (DESC)AS row_name FROM table_name;
可以计算一定范围内、一定值域内、或者一段时间内的累积和以及移动平均值等。 可以结合聚集函数SUM() 、AVG() 等使用。 可以结合FIRST_VALUE() 和LAST_VALUE(),返回窗口的第一个和最后一个值
SELECT 其中: PRECEDING:在前 的意思。 BETWEEN 3 PRECEDING AS cumulative_amount 也可以 month 3 PRECENDING) AS cumulative_amount
1 PRECEDING AND 1 FOLLOWING) AS cumulative_amount
FIRST_VALUE(AS xxxx; 这样就可以获得该行上一行和下一行的值 SUM(column_name1) BY column_name2)
这样,会将数据按column_name2分组,然后求column_name1的和,但在表输出的时候是按ORDER BY 格式输出 LAG(column_name1,1) OVER(BY column_name2) 这样就获得前一条、后一条的数据 5.FIRST、LAST 获得一个排序分组中的第一个值和组后一个值。可以与分组分组函数结合。 MIN(month) KEEP(DENSE_RANK FIRST AS highest_sales_month,255); line-height:1.5!important">month) KEEP(DENSE_RANK LAST AS lows_sales_month month; 这样就可以求得一年中销量最高和最低的月份。 6.使用线性回归函数 7.使用假想评级与分布函数 (编辑:4S站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |