PERCENTILE_ CONT función - AWS Clean Rooms

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

PERCENTILE_ CONT función

PERCENTILE_ CONT es una función de distribución inversa que asume un modelo de distribución continuo. Toma un valor percentil y una especificación de ordenación, y devuelve un valor interpolado que se encuadraría dentro de ese valor percentil dado respecto de la especificación de ordenación.

PERCENTILE_ CONT calcula una interpolación lineal entre valores después de ordenarlos. Utilizando el valor percentil (P) y la cantidad de filas no nulas (N) en el grupo de agregación, la función computa la cantidad de filas después de ordenar las filas según la especificación de ordenación. Esta cantidad de filas (RN) se computa según la fórmula RN = (1+ (P*(N-1)). El resultado final de la función de agregación se computa por interpolación lineal entre los valores de filas en números de filas CRN = CEILING(RN) y FRN = FLOOR(RN).

El resultado final será el siguiente.

Si (CRN = FRN = RN), entonces el resultado es (value of expression from row at RN)

De lo contrario, el resultado es el siguiente:

(CRN - RN) * (value of expression for row at FRN) + (RN - FRN) * (value of expression for row at CRN).

PERCENTILE_ CONT es una función exclusiva de nodos de cálculo. La función devuelve un error si la consulta no hace referencia a una tabla definida por el usuario o AWS Clean Rooms a una tabla del sistema.

Sintaxis

PERCENTILE_CONT ( percentile ) WITHIN GROUP (ORDER BY expr)

Argumentos

percentil

Constante numérica entre 0 y 1. Los valores nulos se ignoran en el cálculo.

WITHINGROUP(ORDERPOR expr)

Valores numéricos o de fecha/hora específicos para ordenar y calcular el percentil.

Devuelve

El tipo de devolución viene determinado por el tipo de datos de la expresión ORDER BY de la WITHIN GROUP cláusula. En la siguiente tabla se muestra el tipo de retorno de cada tipo de datos de la expresión ORDER BY.

Tipo de entrada Tipo de retorno
SMALLINT, INTEGER, BIGINT, NUMERIC, DECIMAL DECIMAL
FLOAT, DOUBLE DOUBLE
DATE DATE
TIMESTAMP TIMESTAMP
TIMESTAMPTZ TIMESTAMPTZ

Notas de uso

Si la expresión ORDER BY es un tipo de DECIMAL datos definido con una precisión máxima de 38 dígitos, es posible que PERCENTILE _ CONT devuelva un resultado impreciso o un error. Si el valor devuelto por la CONT función PERCENTILE _ supera los 38 dígitos, el resultado se trunca para ajustarse, lo que provoca una 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, se recomienda utilizar un tipo de datos con menor precisión o convertir la expresión ORDER BY con una precisión menor.

Si una instrucción incluye varias llamadas a funciones agregadas basadas en la clasificación (LISTAGGCONT, PERCENTILE _ oMEDIAN), todas deben usar los mismos valores ORDER BY. Tenga en cuenta que MEDIAN se aplica un orden implícito por al valor de la expresión.

Por ejemplo, la siguiente instrucción devuelve un error.

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, pricepai... ERROR: within group ORDER BY clauses for aggregate functions must be the same

La siguiente instrucción se ejecuta correctamente.

select top 10 salesid, sum(pricepaid), percentile_cont(0.6) within group (order by salesid), median (salesid) from sales group by salesid, pricepaid;

Ejemplos

El siguiente ejemplo muestra que MEDIAN produce los mismos 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 ---------+---------+-----------------+------- 1 | 1 | 1.0 | 1.0 2 | 3 | 3.0 | 3.0 5 | 2 | 2.0 | 2.0 9 | 4 | 4.0 | 4.0 12 | 1 | 1.0 | 1.0 16 | 1 | 1.0 | 1.0 19 | 2 | 2.0 | 2.0 19 | 3 | 3.0 | 3.0 22 | 2 | 2.0 | 2.0 25 | 2 | 2.0 | 2.0