Función de ventana MEDIAN - Amazon Redshift

Función de ventana MEDIAN

Calcula el valor mediano para el rango de valores en una ventana o partición. Se ignoran los valores NULL en el rango.

MEDIAN es una función de distribución inversa que asume un modelo de distribución continua.

Sintaxis

MEDIAN ( median_expression ) OVER ( [ PARTITION BY partition_expression ] )

Argumentos

expresión_de_mediana

Una expresión, como un nombre de columna, que proporciona un valor para los cuales determinar la media. La expresión debe tener un tipo de dato numérico o de fecha y hora o ser implícitamente convertible en uno.

OVER

Una cláusula que especifica la partición de ventana. La cláusula OVER no puede contener una especificación de marco de ventana u ordenamiento.

PARTITION BY partition_expression

Opcional. Una expresión que establece el rango de registros para cada grupo en la cláusula OVER.

Tipos de datos

El tipo de valor devuelto viene determinado por el tipo de datos de expresión_de_mediana. En la tabla siguiente, se muestra el tipo de valor devuelto para cada tipo de datos de expresión_de_mediana.

Tipo de entrada Tipo de retorno
INT2, INT4, INT8, NUMERIC, DECIMAL DECIMAL
FLOAT, DOUBLE DOBLE
FECHA FECHA

Notas de uso

Si el argumento expresión_de_mediana es un tipo de dato DECIMAL definido con la precisión máxima de 38 dígitos, es posible que MEDIAN devuelva un resultado impreciso o un error. Si el valor de retorno de la función MEDIAN supera los 38 dígitos, el resultado se trunca para adaptarse, lo que genera pérdida de precisión. Si, durante la interpolación, un resultado intermedio supera la precisión máxima, se produce un desbordamiento numérico y la función devuelve un error. Para evitar estas condiciones, recomendamos usar un tipo de dato con menor precisión o emitir el argumento median_expression con una precisión menor.

Por ejemplo, la función SUM con un argumento DECIMAL devuelve una precisión predeterminada de 38 dígitos. La escala del resultado es la misma que la escala del argumento. Entonces, por ejemplo, un SUM de una columna DECIMAL(5,2) devuelve un tipo de dato DECIMAL(38,2).

En el siguiente ejemplo, se utiliza una función SUM en el argumento median_expression (expresión_de_mediana) de una función MEDIAN. El tipo de datos de la columna PRICEPAID es DECIMAL (8,2), por lo que la función SUM devuelve un DECIMAL (38,2).

select salesid, sum(pricepaid), median(sum(pricepaid)) over() from sales where salesid < 10 group by salesid;

Para evitar una posible pérdida de precisión o un error de desbordamiento, convierta el resultado a un tipo de dato DECIMAL con menor precisión, como se muestra en el siguiente ejemplo.

select salesid, sum(pricepaid), median(sum(pricepaid)::decimal(30,2)) over() from sales where salesid < 10 group by salesid;

Ejemplos

En el siguiente ejemplo, se calcula la cantidad media de ventas para cada vendedor:

select sellerid, qty, median(qty) over (partition by sellerid) from winsales order by sellerid; sellerid qty median --------------------------- 1 10 10.0 1 10 10.0 1 30 10.0 2 20 20.0 2 20 20.0 3 10 17.5 3 15 17.5 3 20 17.5 3 30 17.5 4 10 25.0 4 40 25.0

Para ver una descripción de la tabla WINSALES, consulte Tabla de muestra para ejemplos de funciones de ventana.