Categorias:

Funções de agregação (Geral) , Funções de janela (Geral, Quadro de janela)

STDDEV_SAMP

Retorna o desvio padrão da amostra (raiz quadrada da variância da amostra) de valores não NULL. Se todos os registros dentro de um grupo forem NULL, retorna NULL.

Aliases:

STDDEV

Sintaxe

Função de agregação

STDDEV_SAMP( [ DISTINCT ] <expr1> )
Copy

Função de janela

STDDEV_SAMP( [ 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 avalia como um valor numérico (número inteiro, de ponto flutuante ou ponto fixo).

expr2

Esta é a expressão para divisão.

expr3

Esta é a expressão a ordenar dentro de cada partição.

Retornos

O tipo de dados do valor retornado é DOUBLE.

Notas de uso

  • Para entradas de registro único, STDDEV_SAMP e STDDEV 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 chamado como uma função de janela:

    • A palavra-chave DISTINCT é permitida sintaticamente, mas é ignorada.

    • Se uma subcláusula ORDER BY for usada dentro da cláusula OVER, então deve ser usado no quadro de janela. Se nenhum quadro de janela for especificado, então o ORDER BY implicará um quadro de janela cumulativo:

      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

create or replace table aggr(k int, v decimal(10,2), v2 decimal(10, 2));
insert into aggr values(1, 10, null);
insert into aggr values(2, 10, 11), (2, 20, 22), (2, 25,null), (2, 30, 35);
Copy
select k, stddev_samp(v), stddev_samp(v2) from aggr group by k;

---+----------------+-----------------+
 k | stddev_samp(v) | stddev_samp(v2) |
---+----------------+-----------------+
 1 | [NULL]         | [NULL]          |
 2 | 8.539125634    | 12.013880859    |
---+----------------+-----------------+
Copy