立即注册 登录
炼数成金 返回首页

雷子的个人空间 http://f.dataguru.cn/?29740 [收藏] [复制] [分享] [RSS]

日志

分析函数基本概念

热度 4已有 6182 次阅读2013-6-4 12:02 |个人分类:oracle| 关键词

分析函数语法:
分析函数由三部分构成:分析函数名、over关键词、分析子句
  • 分析函数名:   例如 SUM(sale_cnt), max(sal),括号里添加其参数;
  • OVER: OVER是一个关键词,表示前面的函数是分析函数,不是普通的集合函数分析子句;  OVER关键词后面括号里的内容成为分析子句,
  • 分析子句由如下三部分构成

  • PARTITION BY: 分组子句,表示分析函数的计算范围,不同的组互不相干
  • ORDER BY:      排序子句,表示分组后,组内的排序方式
  • ROWS/RANGE:窗口子句,是在分组(PARTITION BY)后,组内的子分组,也称窗口,此时分析函数的计算范围窗口,而不是PARTITON。窗口有两种,ROWS和RANGE



关于order by和窗口子句需要主意的是:
  • 函数PERCENTILE_CONT和PERCENTILE_DISC和不能使用ORDER BY子句
  • 在后面分析函数列表里,只有带*号的分析函数才能使用窗口子句,并且窗口子句必须要和   ORDER BY 子句同时使用,如果可以使用窗口子句的分析函数,只指定了ORDER BY而      没有指定窗口   子句,Oracle会自动使用默认值 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW.
  • 如果分析函数没有指定ORDER BY子句,也就不存在ROWS/RANGE窗口的计算。



分析函数与聚合函数区别:
  • 普通集合函数每组只返回一行,而分析函数则返回每组的所有行。
  • 普通集合函数SELECT列表的字段,除常量或用作集合函数参数外,都必须放在GROUP BY子句里,而分析函数没有这个限制。
  • 单句SQL,普通集合函数只能指定一个分组,而分析函数可以有多个分组。


分析函数列表

     AVG *
     CORR *
     COVAR_POP *
     COVAR_SAMP *
     COUNT *
     CUME_DISTDENSE_RANK
     FIRST 
     FIRST_VALUE *
     LAGLAST 
     LAST_VALUE *
     LEADMAX *
     MIN *
     NTILE 
     PERCENT_RANK
     PERCENTILE_CONT
     PERCENTILE_DISC
     RANK 
     RATIO_TO_REPORT
     REGR_ (Linear Regression) Functions *
     ROW_NUMBER
     STDDEV *
      STDDEV_POP *
      STDDEV_SAMP *
      SUM * 
      VAR_POP *
      VAR_SAMP *
      VARIANCE * 

路过

鸡蛋
2

鲜花

握手
1

雷人

刚表态过的朋友 (3 人)

发表评论 评论 (2 个评论)

回复 18616389938 2013-6-5 19:50
留名,慢慢看
回复 xinglongbing 2014-1-9 11:15
学习了

facelist

您需要登录后才可以评论 登录 | 立即注册

 

GMT+8, 2019-5-24 23:04 , Processed in 0.111205 second(s), 21 queries .