页面树结构
转至元数据结尾
转至元数据起始

Vertica的分析函数介绍

分析函数作为SQL言语的一种扩展已经被纳入了美国国家标准化组织SQL委员会的SQL规范说明书中。所以不同db厂商支持的分析函数其语法结构和函数名称也基本一致。节约篇幅,这里仅介绍vertica的分析函数语法和函数作用,函数应用相关例子略。

1.       Analytic function syntax

ANALYTIC_FUNCTION( argument-1, ..., argument-n )
OVER( [ window_partition_clause ]
[ window_order_clause ]
[ window_frame_clause )

 

以下是函数用途简短描述清单:

SUM

该函数计算组中表达式的累积和

MIN

在一个组中的数据窗口中查找表达式的最小值

MAX

在一个组中的数据窗口中查找表达式的最大值

AVG

用于计算一个组和数据窗口内表达式的平均值。

COUNT

对一组内发生的事情进行累积计数

RANK

根据ORDER BY 子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置

DENSE_RANK

根据ORDER BY 子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置

FIRST_VALUE

返回组中数据窗口的第一个值

LAST_VALUE

返回组中数据窗口的最后一个值。

LAG

可以访问结果集中的其它行而不用进行自连接

LEAD

LEAD 与 LAG 相反, LEAD 可以访问组中当前行之后的行

ROW_NUMBER

返回有序组中一行的偏移量,从而可用于按特定标准排序的行号

STDDEV

计算当前行关于组的标准偏离

STDDEV_POP

该函数计算总体标准偏离,并返回总体变量的平方根

STDDEV_SAMP

该函数计算累积样本标准偏离,并返回总体变量的平方根

VAR_POP

该函数返回非空集合的总体变量(忽略 null )

VAR_SAMP

该函数返回非空集合的样本变量(忽略 null )

VARIANCE

如果表达式中行数为 1 ,则返回 0 ,如果表达式中行数大于 1 ,则返回 VAR_SAMP

CUME_DIST

计算一行在组中的相对位置

NTILE

将一个组分为 " 表达式 " 的散列表示

PERCENT_RANK

和 CUME_DIST (累积分配)函数类似

PERCENTILE_DISC

返回一个与输入的分布百分比值相对应的数据值

PERCENTILE_CONT

返回一个与输入的分布百分比值相对应的数据值

MEDIAN

在一个组中的数据窗口中查找最小值与最大值的平均值

2.       argument-1, ..., argument-n

分析函数的参数

3.       window_partition_clause

根据划分表达式设置的规则,PARTITION BY(按...划分)将一个结果逻辑分成N个分组划分表达式。在此"划分"和"分组"用作同义词。分析函数独立应用于各个分组,并在应用时重置。

Syntax
OVER ( PARTITION BY expression [ , ... ] )

4.       window_order_clause

ORDER BY(按...排序)语句规定了每个分组(划分)的数据如何排序。这必然影响分析函数的结果。

Syntax
OVER ( ORDER BY expression [ { ASC | DESC } ]
... [ NULLS { FIRST | LAST | AUTO } ] [, expression ...] )

5.       window_frame_clause

窗口生成语句用以定义滑动或固定数据窗口,分析函数在分组内进行分析。该语句能够对分组中任意定义的滑动或固定窗口进行计算。

Syntax
{ ROWS | RANGE }
{
{
BETWEEN
{ UNBOUNDED PRECEDING
| CURRENT ROW
| constant-value { PRECEDING | FOLLOWING }
}
AND
{ UNBOUNDED FOLLOWING
| CURRENT ROW
| constant-value { PRECEDING | FOLLOWING }
}
}
|
{
{ UNBOUNDED PRECEDING
| CURRENT ROW
| constant-value PRECEDING
}
}
}

 

 

例如:

select  ROW_NUMBER() OVER( order by chanxian) as dd ,* from northwind."1ddsqsl"

 

 

  • 无标签