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 |
+---+-----------+