Oracle开发专题之:分析函数总结
这一篇是对前面所有关于分析函数的文章的总结:
一、统计方面: Sum(
Sum( ) Over ([Partition by
) Over ([Partition by  ] [Order by
] [Order by  ])
])

 Sum(
Sum( ) Over ([Partition by
) Over ([Partition by  ] [Order by
] [Order by  ]
]  
 Rows Between
     Rows Between  Preceding And
 Preceding And  Following)
 Following)
 
       
 Sum(
Sum( ) Over ([Partition by
) Over ([Partition by  ] [Order by
] [Order by  ]
]
 Rows Between
     Rows Between  Preceding And Current Row)
 Preceding And Current Row)

 Sum(
Sum( ) Over ([Partition by
) Over ([Partition by  ] [Order by
] [Order by  ]
]
 Range Between Interval '
     Range Between Interval ' ' 'Day' Preceding
' 'Day' Preceding
 And Interval '
                    And Interval ' ' 'Day' Following )
' 'Day' Following )
具体请参考《Oracle开发专题之:分析函数(OVER)》和《Oracle开发专题之:窗口函数》
二、排列方面: Rank() Over ([Partition by
Rank() Over ([Partition by  ] [Order by
] [Order by  ] [Nulls First/Last])
] [Nulls First/Last])

Dense_rank() Over ([Patition by ] [Order by
] [Order by  ] [Nulls First/Last])
] [Nulls First/Last])
 
   
 Row_number() Over ([Partitionby
Row_number() Over ([Partitionby  ] [Order by
] [Order by  ] [Nulls First/Last])
] [Nulls First/Last])
 
   
 Ntile(
Ntile( ) Over ([Partition by
) Over ([Partition by  ] [Order by
] [Order by  ])
])
具体请参考《Oracle开发专题之:分析函数2》
三、最大值/最小值查找方面: Min(
Min( )/Max(
)/Max( ) Keep (Dense_rank First/Last [Partition by
) Keep (Dense_rank First/Last [Partition by  ] [Order by
] [Order by  ])
])
具体请参考《Oracle开发专题之:分析函数3》
四、首记录/末记录查找方面: First_value / Last_value(Sum(
First_value / Last_value(Sum( ) Over ([Patition by
) Over ([Patition by  ] [Order by
] [Order by  ]
]
 Rows Between
       Rows Between  Preceding And
 Preceding And  Following  ))
 Following  ))
具体请参考《Oracle开发专题之:窗口函数》
五、相邻记录之间比较方面: Lag(Sum(
Lag(Sum( ), 1) Over([Patition by
), 1) Over([Patition by  ] [Order by
] [Order by  ])
])
具体请参考《Oracle开发专题之:报表函数》
一、统计方面:
 Sum(
Sum( ) Over ([Partition by
) Over ([Partition by  ] [Order by
] [Order by  ])
])
 Sum(
Sum( ) Over ([Partition by
) Over ([Partition by  ] [Order by
] [Order by  ]
]   Rows Between
     Rows Between  Preceding And
 Preceding And  Following)
 Following) 
        Sum(
Sum( ) Over ([Partition by
) Over ([Partition by  ] [Order by
] [Order by  ]
] Rows Between
     Rows Between  Preceding And Current Row)
 Preceding And Current Row)
 Sum(
Sum( ) Over ([Partition by
) Over ([Partition by  ] [Order by
] [Order by  ]
] Range Between Interval '
     Range Between Interval ' ' 'Day' Preceding
' 'Day' Preceding And Interval '
                    And Interval ' ' 'Day' Following )
' 'Day' Following )具体请参考《Oracle开发专题之:分析函数(OVER)》和《Oracle开发专题之:窗口函数》
二、排列方面:
 Rank() Over ([Partition by
Rank() Over ([Partition by  ] [Order by
] [Order by  ] [Nulls First/Last])
] [Nulls First/Last])
Dense_rank() Over ([Patition by
 ] [Order by
] [Order by  ] [Nulls First/Last])
] [Nulls First/Last]) 
    Row_number() Over ([Partitionby
Row_number() Over ([Partitionby  ] [Order by
] [Order by  ] [Nulls First/Last])
] [Nulls First/Last]) 
    Ntile(
Ntile( ) Over ([Partition by
) Over ([Partition by  ] [Order by
] [Order by  ])
])具体请参考《Oracle开发专题之:分析函数2》
三、最大值/最小值查找方面:
 Min(
Min( )/Max(
)/Max( ) Keep (Dense_rank First/Last [Partition by
) Keep (Dense_rank First/Last [Partition by  ] [Order by
] [Order by  ])
])具体请参考《Oracle开发专题之:分析函数3》
四、首记录/末记录查找方面:
 First_value / Last_value(Sum(
First_value / Last_value(Sum( ) Over ([Patition by
) Over ([Patition by  ] [Order by
] [Order by  ]
] Rows Between
       Rows Between  Preceding And
 Preceding And  Following  ))
 Following  ))具体请参考《Oracle开发专题之:窗口函数》
五、相邻记录之间比较方面:
 Lag(Sum(
Lag(Sum( ), 1) Over([Patition by
), 1) Over([Patition by  ] [Order by
] [Order by  ])
])具体请参考《Oracle开发专题之:报表函数》
 
                    
                
 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号