- Categorias:
Funções de agregação (Geral) , Funções de janela
MEDIAN¶
Determina a mediana de um conjunto de valores.
Sintaxe¶
Função de agregação
MEDIAN( <expr> )
Função de janela
MEDIAN( <expr> ) OVER ( [ PARTITION BY <expr2> ] )
Argumento¶
expr
A expressão deve ser avaliada como um tipo de dados numérico (
INTEGER
,FLOAT
,DECIMAL
ou equivalente).
Retornos¶
Retorna um número FLOAT
ou DECIMAL
(ponto fixo), dependendo da entrada.
Notas de uso¶
Se o número de valores diferente de NULL for um número ímpar maior ou igual a 1, isto retornará o valor mediano (“centro”) dos valores diferentes de NULL.
Se o número de valores diferentes de NULL for um número par, isto retornará um valor igual à média dos dois valores centrais. Por exemplo, se os valores forem 1, 3, 5 e 20, então isso retornará 4 (a média de 3 e 5).
Se todos os valores forem NULL, isto retornará NULL.
Se o número de valores não NULL for 0, isto retornará NULL.
DISTINCT não é suportado para esta função.
Quando usado como uma função de janela:
Esta função não oferece suporte para:
Subcláusula ORDER BY na cláusula OVER().
Quadros de janela.
Exemplos¶
Isso mostra como usar a função.
Criar uma tabela vazia.
CREATE OR REPLACE TABLE aggr(k int, v decimal(10,2));Obter o valor
MEDIAN
para a coluna v. A função retorna NULL porque não há linhas.SELECT MEDIAN (v) FROM aggr; +------------+ | MEDIAN (V) | |------------| | NULL | +------------+Inserir algumas linhas:
INSERT INTO aggr VALUES(1, 10), (1,20), (1, 21); INSERT INTO aggr VALUES(2, 10), (2, 20), (2, 25), (2, 30); INSERT INTO aggr VALUES(3, NULL);Obter o valor
MEDIAN
para cada grupo. Observe que como o número de valores no grupo k = 2 é um número par, o valor retornado para esse grupo é o ponto médio entre os dois números médios.SELECT k, MEDIAN(v) FROM aggr GROUP BY k ORDER BY k; +---+-----------+ | K | MEDIAN(V) | |---+-----------| | 1 | 20.00000 | | 2 | 22.50000 | | 3 | NULL | +---+-----------+