STDDEV_POP¶
返回非 NULL 值的总体标准差(方差的平方根)。
另请参阅 STDDEV,它返回样本标准差(方差的平方根)。
语法¶
聚合函数
STDDEV_POP( [ DISTINCT ] <expr1>)
窗口函数
STDDEV_POP( [ DISTINCT ] <expr1> ) OVER (
[ PARTITION BY <expr2> ]
[ ORDER BY <expr3> [ ASC | DESC ] [ <window_frame> ] ]
)
有关 window_frame
语法的详细信息,请参阅 窗口框架语法和用法。
实参¶
expr1
计算结果为数值的表达式。这是计算标准偏差的表达式。
expr2
这是用于划分分区的可选表达式。
expr3
这是每个分区中作为排序规则的可选表达式。
返回¶
返回值的数据类型是 DOUBLE。
如果组内的所有记录都是 NULL,则此函数返回 NULL。
使用说明¶
聚合函数示例¶
以下示例计算少量整数的标准差:
CREATE TABLE t1 (c1 INTEGER); INSERT INTO t1 (c1) VALUES (6), (10), (14) ; SELECT STDDEV_POP(c1) FROM t1;+----------------+ | STDDEV_POP(C1) | |----------------| | 3.265986375 | +----------------+
请注意,函数 STDDEV 和 STDDEV_SAMP 返回不同于 STDDEV_POP 的结果。
以下示例假设您有一张名为 menu
的表,其中列出了咖啡馆中待售的食品项目。以下输出显示了表中属于 Dessert
类别的 6 行。其他类别也存在于其他行,例如 Main
和 Beverage
。
+---------+--------------------+---------------+-------------------+----------------+ | MENU_ID | MENU_ITEM_NAME | ITEM_CATEGORY | COST_OF_GOODS_USD | SALE_PRICE_USD | |---------+--------------------+---------------+-------------------+----------------| | 10002 | Sugar Cone | Dessert | 2.5000 | 6.0000 | | 10003 | Waffle Cone | Dessert | 2.5000 | 6.0000 | | 10004 | Two Scoop Bowl | Dessert | 3.0000 | 7.0000 | | 10008 | Ice Cream Sandwich | Dessert | 1.0000 | 4.0000 | | 10009 | Mango Sticky Rice | Dessert | 1.2500 | 5.0000 | | 10010 | Popsicle | Dessert | 0.5000 | 3.0000 | +---------+--------------------+---------------+-------------------+----------------+
要查找销售商品成本和售价的总体标准差(仅限 Dessert
行),请运行以下查询:
SELECT item_category, STDDEV_POP(cost_of_goods_usd) stddev_cogs, STDDEV_POP(sale_price_usd) stddev_price FROM menu WHERE item_category='Dessert' GROUP BY 1;+---------------+--------------+--------------+ | ITEM_CATEGORY | STDDEV_COGS | STDDEV_PRICE | |---------------+--------------+--------------| | Dessert | 0.9176131477 | 1.343709625 | +---------------+--------------+--------------+
窗口函数示例¶
以下示例使用相同的 menu
表,但将 STDDEV_POP 函数作为窗口函数来运行。
窗口函数按 item_category
列对行进行分区。因此,对每个项目类别计算一次标准差,并在组内每行的结果中重复该值。在此示例中,必须按项目类别和销售商品成本对行进行分组。(请注意,该 6 个 Dessert
行现在组合为 5 行,因为其中两行具有相同的商品成本价值。)
SELECT item_category, cost_of_goods_usd, STDDEV_POP(cost_of_goods_usd) OVER(PARTITION BY item_category) stddev_cogs FROM menu GROUP BY 1,2 ORDER BY item_category;+---------------+-------------------+--------------+ | ITEM_CATEGORY | COST_OF_GOODS_USD | STDDEV_COGS | |---------------+-------------------+--------------| | Beverage | 0.5000 | 0.1027402334 | | Beverage | 0.7500 | 0.1027402334 | | Beverage | 0.6500 | 0.1027402334 | | Dessert | 2.5000 | 0.9433981132 | | Dessert | 3.0000 | 0.9433981132 | | Dessert | 1.0000 | 0.9433981132 | | Dessert | 0.5000 | 0.9433981132 | | Dessert | 1.2500 | 0.9433981132 | | Main | 4.5000 | 3.352193642 | | Main | 8.0000 | 3.352193642 | | Main | 2.0000 | 3.352193642 | | Main | 3.5000 | 3.352193642 | ...