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

Função de janela

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

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;
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  |
...