Categorias:

Funções de agregação (Geral) , Sintaxe e uso da função de janela (Geral)

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>) 
Copy

Função de janela

STDDEV_POP( [ DISTINCT ] <expr1> ) OVER ( [ PARTITION BY <expr2> ] [ ORDER BY <expr3> [ ASC | DESC ] [ <window_frame> ] ] ) 
Copy

Para uma sintaxe window_frame detalhada, consulte Sintaxe e uso da função 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 uma quadro de janela, o seguinte quadro de janela implícito será usado:

      RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW

      Para obter mais informações sobre quadros de janela, incluindo sintaxe, notas de uso e exemplos, consulte Sintaxe e uso da função 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; 
Copy
+----------------+ | 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; 
Copy
+---------------+--------------+--------------+ | 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; 
Copy
+---------------+-------------------+--------------+ | 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 | ...