STDDEV、STDDEV_SAMP¶
返回非 NULL 值的样本标准差(样本方差的平方根)。STDDEV 和 STDDEV_SAMP 是同一函数的别名。
也可以看看 STDDEV_POP,它返回总体标准差(方差的平方根)。
语法¶
聚合函数
{ STDDEV | STDDEV_SAMP } ( [ DISTINCT ] <expr1> )
窗口函数
{ STDDEV | STDDEV_SAMP } ( [ DISTINCT ] <expr1> ) OVER (
[ PARTITION BY <expr2> ]
[ ORDER BY <expr3> [ ASC | DESC ] [ <window_frame> ] ]
)
有关 window_frame
语法的详细信息,请参阅 窗口框架语法和用法。
实参¶
expr1
计算结果为数值的表达式。这是计算标准偏差的表达式。
expr2
这是用于划分分区的可选表达式。
expr3
这是每个分区中作为排序规则的可选表达式。
返回¶
返回值的数据类型是 DOUBLE。
如果组内的所有记录都是 NULL,则此函数返回 NULL。
使用说明¶
对于单条记录输入,STDDEV 和 STDDEV_SAMP 都返回 NULL。这与 Oracle 行为不同,在 Oracle 行为中,STDDEV_SAMP 为单条记录返回 NULL,并且 STDDEV 返回 0。
传递 VARCHAR 表达式时,此函数会将输入隐式转换为浮点值。如果无法执行转换,则会返回错误。
当此函数作为窗口函数调用且 OVER 子句包含 ORDER BY 子句时:
DISTINCT 关键字被禁止,并导致 SQL 编译错误。
必须指定窗口框架。如果您未指定窗口框架,则使用隐式累积窗口框架:
RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
有关窗口框架的更多详细信息(包括语法和示例),请参阅 窗口框架语法和用法。
有关隐式窗口框架的更多信息,请参阅 窗口框架使用说明。
聚合函数示例¶
以下示例计算了一小部分整数样本的标准差:
CREATE TABLE t1 (c1 INTEGER); INSERT INTO t1 (c1) VALUES (6), (10), (14) ; SELECT STDDEV(c1) FROM t1;+----------+ | STDDEV() | |----------| | 4 | +----------+
请注意,函数 STDDEV_SAMP 返回相同的结果:
SELECT STDDEV_SAMP(c1) FROM t1;+-----------------+ | STDDEV_SAMP(C1) | |-----------------| | 4 | +-----------------+
以下示例使用一个名为 menu_items
的小表格,其中列出了食品卡车所出售的物品。如果您想创建并加载此表,请参阅 创建并加载 menu_items 表。
要找出销售货物成本(COGS)和 Dessert
行售价的样本标准差,请运行此查询:
SELECT menu_category, STDDEV(menu_cogs_usd) stddev_cogs, STDDEV(menu_price_usd) stddev_price FROM menu_items WHERE menu_category='Dessert' GROUP BY 1;+---------------+-------------+--------------+ | MENU_CATEGORY | STDDEV_COGS | STDDEV_PRICE | |---------------+-------------+--------------| | Dessert | 1.00519484 | 1.471960144 | +---------------+-------------+--------------+
窗口函数示例¶
下面的例子也使用了 menu_items
表格(见 创建并加载 menu_items 表),但调用 STDDEV 函数用作窗口函数。
窗口函数按 menu_category
列对行进行分区。因此,每个类别都计算一次标准差,并且该值在组内的每一行结果中不断重复。在此示例中,行必须按菜单类别和销售货物成本进行分组。
SELECT menu_category, menu_cogs_usd, STDDEV(menu_cogs_usd) OVER(PARTITION BY menu_category) stddev_cogs FROM menu_items GROUP BY 1,2 ORDER BY menu_category;
以下输出是此查询的部分结果集(前 15 行):
+---------------+---------------+--------------+ | MENU_CATEGORY | MENU_COGS_USD | STDDEV_COGS | |---------------+---------------+--------------| | Beverage | 0.50 | 0.1258305738 | | Beverage | 0.65 | 0.1258305738 | | Beverage | 0.75 | 0.1258305738 | | Dessert | 1.25 | 1.054751155 | | Dessert | 3.00 | 1.054751155 | | Dessert | 1.00 | 1.054751155 | | Dessert | 2.50 | 1.054751155 | | Dessert | 0.50 | 1.054751155 | | Main | 4.50 | 3.444051572 | | Main | 2.40 | 3.444051572 | | Main | 1.50 | 3.444051572 | | Main | 11.00 | 3.444051572 | | Main | 8.00 | 3.444051572 | | Main | NULL | 3.444051572 | | Main | 12.00 | 3.444051572 | ...