oracle评级函数、窗口函数
用于等级、百分点、n分片等。
函数 |
说明 |
RANK() |
返回数据项在分组中的排名,排名相等会在名次中留下空位 |
DENSE_RANK() |
返回数据项在分组中的排名,排名相等会在名次中不会留下空位 |
CUME_DIST() |
返回特定值对于一组值的位置“cumulative distribution”(累积分布) |
PERCENT_RANK()( |
返回某个值相对于一组值的百分比排名 |
NTILE() |
返回n分片后的值 |
ROW_NUMBER() |
为每条记录返回一个数字 |
- 1 2 column_name, OVER (BY column_name AS rank, OVER (BY DESC) 5 OVER (BY column_name OVER(PARTITION month BY column_name CUME_DIST()、PERCENT_RANK()
NTILE()
ROW_NUMBER()
ROW_NUMBER()从1开始,为每条记录返回一个数字
OVER (BY column_name AS row_name 2.窗口函数:
可以计算一定范围内、一定值域内、或者一段时间内的累积和以及移动平均值等。
可以结合聚集函数SUM() 、AVG() 等使用。
可以结合FIRST_VALUE() 和LAST_VALUE(),返回窗口的第一个和最后一个值
- SUM(amount) month_amount, SUM(amount)) ORDER month ROWS AND AS cumulative_amount GROUP month BY SUM( OVER (BY BETWEEN AND AS cumulative_amount
也可以
SUM(amount)) ORDER month AS cumulative_amount
前后一个月之间的和
SUM(amount)) ORDER month ROWS 1 PRECEDING 1 FOLLOWING) SUM(amount)) ORDER month ROWS 1 PRECEDING 1 FOLLOWING) SUM(amount)) ORDER month ROWS 1 PRECEDING 1 FOLLOWING) 3.报表函数: 用于执行跨越分组和组内分区的计算 (这里的组应该指的是 ORDER BY 的分组)
OVER(PARTITION 4.LAG()、LEAD() 获得相对于当前记录指定距离的那条记录的数据 LAG()为向前、LEAD()为向后
LAG(column_name1,OVER(BY column_name2) LEAG(column_name1,OVER(BY column_name2)
这样就获得前一条、后一条的数据
month) KEEP(DENSE_RANK FIRST BY AS highest_sales_month, month) KEEP(DENSE_RANK LAST BY AS lows_sales_month GROUP month BY <span style="\"color:" #ff00ff;\"="">month;
原文链接:http://www.jxszl.com/biancheng/shujuku/445410.html