

 O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a [publicação de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Função MEDIAN
<a name="r_MEDIAN"></a>

Calcula o valor médio para o intervalo de valores. Os valores `NULL` no intervalo são ignorados.

MEDIAN é uma função de distribuição inversa que assume um modelo de distribuição contínua.

MEDIAN é um caso especial de [PERCENTILE\_CONT](r_PERCENTILE_CONT.md).

## Sintaxe
<a name="r_MEDIAN-synopsis"></a>

```
MEDIAN(median_expression)
```

## Argumentos
<a name="r_MEDIAN-arguments"></a>

 *median\_expression*   
A coluna ou expressão de destino na qual a função opera.

## Tipos de dados
<a name="r_MEDIAN-data-types"></a>

O tipo de retorno é determinado pelo tipo de dados de *median\_expression*. A tabela a seguir mostra o tipo de retorno para cada tipo de dados de *median\_expression*.


| Tipo de entrada | Tipo de retorno | 
| --- | --- | 
| INT2, INT4, INT8, NUMERIC, DECIMAL | DECIMAL | 
| FLOAT, DOUBLE | DOUBLE | 
| DATE | DATE | 
| TIMESTAMP | TIMESTAMP | 
| TIMESTAMPTZ | TIMESTAMPTZ | 

## Observações de uso
<a name="r_MEDIAN-data-type-usage-notes"></a>

Se o argumento de *median\_expression* é um tipo de dados `DECIMAL` com a precisão máxima de 38 dígitos, é possível que MEDIAN retorne um resultado impreciso ou um erro. Se o valor de retorno da função MEDIAN excede 38 dígitos, o resultado é truncado, o que causa a perda de precisão. Se, durante a interpolação, um resultado intermediário excede a precisão máxima, um excedente numérico ocorre e função retorna um erro. Para evitar essas condições, recomendamos o uso de um tipo de dados com menor precisão ou a conversão do argumento *median\_expression* para uma precisão mais baixa. 

Se uma instrução inclui várias chamadas para funções agregadas baseadas em classificação (LISTAGG, PERCENTILE\_CONT ou MEDIAN), todas devem usar os mesmos valores ORDER BY. Observe que MEDIAN aplica um order by implícito no valor da expressão. 

Por exemplo, a seguinte instrução retorna um erro. 

```
SELECT TOP 10 salesid, SUM(pricepaid), 
PERCENTILE_CONT(0.6) WITHIN GROUP(ORDER BY salesid),
MEDIAN(pricepaid)
FROM sales 
GROUP BY salesid, pricepaid;

An error occurred when executing the SQL command:
SELECT TOP 10 salesid, SUM(pricepaid), 
PERCENTILE_CONT(0.6) WITHIN GROUP(ORDER BY salesid),
MEDIAN(pricepaid)
FROM sales 
GROUP BY salesid, pricepaid;

ERROR: within group ORDER BY clauses for aggregate functions must be the same
```

A instrução a seguir é executada com êxito. 

```
SELECT TOP 10 salesid, SUM(pricepaid), 
PERCENTILE_CONT(0.6) WITHIN GROUP(ORDER BY salesid),
MEDIAN(salesid)
FROM sales 
GROUP BY salesid, pricepaid;
```

## Exemplos
<a name="r_MEDIAN-examples"></a>

Os exemplos a seguir usam o banco de dados de exemplo de TICKIT. Para obter mais informações, consulte [Banco de dados de exemplo](c_sampledb.md).

O seguinte exemplo mostra que MEDIAN produz os mesmos resultados que PERCENTILE\_CONT(0,5). 

```
SELECT TOP 10 DISTINCT sellerid, qtysold, 
PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY qtysold),
MEDIAN(qtysold) 
FROM sales
GROUP BY sellerid, qtysold;

+----------+---------+-----------------+--------+
| sellerid | qtysold | percentile_cont | median |
+----------+---------+-----------------+--------+
|        2 |       2 |               2 |      2 |
|       26 |       1 |               1 |      1 |
|       33 |       1 |               1 |      1 |
|       38 |       1 |               1 |      1 |
|       43 |       1 |               1 |      1 |
|       48 |       2 |               2 |      2 |
|       48 |       3 |               3 |      3 |
|       77 |       4 |               4 |      4 |
|       85 |       4 |               4 |      4 |
|       95 |       2 |               2 |      2 |
+----------+---------+-----------------+--------+
```

O exemplo a seguir encontra a quantidade média vendida para cada sellerid.

```
SELECT sellerid, 
MEDIAN(qtysold)
FROM sales
GROUP BY sellerid
ORDER BY sellerid
LIMIT 10;

+----------+--------+
| sellerid | median |
+----------+--------+
|        1 |    1.5 |
|        2 |      2 |
|        3 |      2 |
|        4 |      2 |
|        5 |      1 |
|        6 |      1 |
|        7 |    1.5 |
|        8 |      1 |
|        9 |      4 |
|       12 |      2 |
+----------+--------+
```

Para verificar os resultados da consulta anterior para o primeiro sellerid, use o exemplo a seguir.

```
SELECT qtysold 
FROM sales 
WHERE sellerid=1;

+---------+
| qtysold |
+---------+
|       2 |
|       1 |
+---------+
```