- Categorias:
Funções de agregação (Geral) , Funções de janela (Geral, Quadro de janela)
STDDEV, STDDEV_SAMP¶
Retorna o desvio padrão da amostra (raiz quadrada da variância da amostra) de valores não NULL. STDDEV e STDDEV_SAMP são aliases para a mesma função.
Consulte também STDDEV_POP, que retorna o desvio padrão da população (raiz quadrada da variância).
Sintaxe¶
Função de agregação
{ STDDEV | STDDEV_SAMP } ( [ DISTINCT ] <expr1> )
Função de janela
{ STDDEV | STDDEV_SAMP } ( [ 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¶
Para entradas de registro único, STDDEV e STDDEV_SAMP retornam NULL. Isto é diferente do comportamento do Oracle, onde STDDEV_SAMP retorna NULL para um único registro e STDDEV retorna 0.
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 amostra de números inteiros:
CREATE TABLE t1 (c1 INTEGER); INSERT INTO t1 (c1) VALUES (6), (10), (14) ; SELECT STDDEV(c1) FROM t1;+----------+ | STDDEV() | |----------| | 4 | +----------+
Observe que a função STDDEV_SAMP retorna o mesmo resultado:
SELECT STDDEV_SAMP(c1) FROM t1;+-----------------+ | STDDEV_SAMP(C1) | |-----------------| | 4 | +-----------------+
O exemplo a seguir usa uma pequena tabela chamada menu_items
, que lista os itens à venda em um food truck. Se desejar criar e carregar esta tabela, consulte Criação e carregamento da tabela menu_items.
Para encontrar o desvio padrão da amostra para o custo dos produtos vendidos (COGS) e o preço de venda para as linhas Dessert
, execute esta consulta:
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 | +---------------+-------------+--------------+
Exemplo de função de janela¶
O exemplo a seguir também usa a tabela menu_items
(consulte Criação e carregamento da tabela menu_items), mas chama a função STDDEV como uma função de janela.
A função de janela particiona linhas pela coluna menu_category
. Portanto, o desvio padrão é calculado uma vez para cada categoria, e esse valor é repetido no resultado para cada linha do grupo. Neste exemplo, as linhas devem ser agrupadas pela categoria do menu e pelo custo dos produtos vendidos.
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;
A saída a seguir é um conjunto de resultados parciais para esta consulta (as primeiras 15 linhas):
+---------------+---------------+--------------+ | 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 | ...