- Categorias:
Funções de agregação (Geral) , Funções de janela (Geral, Quadro de janela)
STDDEV_POP¶
Retorna o desvio padrão da população (raiz quadrada da variância) de valores não NULL.
Consulte também STDDEV, que retorna o desvio padrão da amostra (raiz quadrada da variância).
Sintaxe¶
Função de agregação
STDDEV_POP( [ DISTINCT ] <expr1>)
Função de janela
STDDEV_POP( [ DISTINCT ] <expr1> ) OVER (
[ PARTITION BY <expr2> ]
[ ORDER BY <expr3> [ ASC | DESC ] [ <window_frame> ] ]
)
Para obter mais detalhes sobre a sintaxe window_frame
, consulte Sintaxe e utilização do quadro de janela.
Argumentos¶
expr1
Uma expressão que é avaliada como um valor numérico. Esta é a expressão na qual é calculado o desvio padrão.
expr2
Esta é a expressão opcional para divisão.
expr3
Esta é a expressão opcional a ordenar dentro de cada partição.
Retornos¶
O tipo de dados do valor retornado é DOUBLE.
Se todos os registros dentro de um grupo forem NULL, esta função retorna NULL.
Notas de uso¶
Ao passar uma expressão VARCHAR, esta função converte implicitamente a entrada em valores de ponto flutuante. Se a conversão não puder ser executada, um erro é devolvido.
Quando esta função é chamada como uma função de janela e a cláusula OVER contém uma cláusula ORDER BY:
A palavra-chave DISTINCT é proibida e resulta em um erro de compilação SQL.
Um quadro de janela deve ser especificado. Se você não especificar um quadro de janela, será usado um quadro de janela cumulativo implícito:
RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
Para obter mais detalhes sobre quadros de janela, incluindo sintaxe e exemplos, consulte Sintaxe e utilização do quadro de janela.
Para obter mais informações sobre quadros de janela implícitos, consulte Notas de uso dos quadros de janela.
Exemplos de funções de agregação¶
O exemplo a seguir calcula o desvio padrão para uma pequena população de números inteiros:
CREATE TABLE t1 (c1 INTEGER); INSERT INTO t1 (c1) VALUES (6), (10), (14) ; SELECT STDDEV_POP(c1) FROM t1;+----------------+ | STDDEV_POP(C1) | |----------------| | 3.265986375 | +----------------+
Observe que as funções STDDEV e STDDEV_SAMP não retornam o mesmo resultado que STDDEV_POP.
O exemplo a seguir pressupõe que você tenha uma tabela chamada menu
que lista os itens de alimentos à venda em um café. A saída a seguir mostra as 6 linhas na tabela que pertencem à categoria Dessert
. Também existem outras linhas para outras categorias, como Main
e 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 | +---------+--------------------+---------------+-------------------+----------------+
Para encontrar o desvio padrão populacional para o custo dos produtos vendidos e o preço de venda (somente para as linhas Dessert
), execute esta consulta:
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 | +---------------+--------------+--------------+
Exemplo de função de janela¶
O exemplo a seguir usa a mesma tabela menu
, mas executa a função STDDEV_POP como uma função de janela.
A função de janela particiona linhas pela coluna item_category
. Portanto, o desvio padrão é calculado uma vez para cada categoria de item, e esse valor é repetido no resultado para cada linha do grupo. Neste exemplo, as linhas devem ser agrupadas pela categoria do item e pelo custo dos produtos vendidos. (Observe que as 6 linhas Dessert
agora estão agrupadas em 5 linhas porque duas linhas têm o mesmo valor de custo de mercadorias.)
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 | ...