Función de ventana RATIO_TO_REPORT
Calcula la relación de un valor con la suma de los valores en una ventana o partición. La relación de un valor de informe se determina utilizando la fórmula:
value of
ratio_expression argument for the current row / sum of
ratio_expression argument for the window or partition
El siguiente conjunto de datos ilustra el uso de esta fórmula:
Row# Value Calculation RATIO_TO_REPORT 1 2500 (2500)/(13900) 0.1798 2 2600 (2600)/(13900) 0.1870 3 2800 (2800)/(13900) 0.2014 4 2900 (2900)/(13900) 0.2086 5 3100 (3100)/(13900) 0.2230
El rango de valor de retorno es 0 a 1, inclusive. Si ratio_expression es NULL, el valor de devolución es NULL
. Si un valor en partition_expression es único, la función devolverá 1
para ese valor.
Sintaxis
RATIO_TO_REPORT ( ratio_expression ) OVER ( [ PARTITION BY partition_expression ] )
Argumentos
- ratio_expression
-
Una expresión, como un nombre de columna, que proporciona el valor para el cual determinar la relación. La expresión debe tener un tipo de dato numérico o ser implícitamente convertible a un dato numérico.
No se puede usar ninguna otra función analítica en ratio_expression.
- 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.
Tipo de retorno
FLOAT8
Ejemplos
En los siguientes ejemplos, se utiliza la tabla WINSALES. Para obtener información sobre cómo crear esta tabla WINSALES, consulte Tabla de muestra para ejemplos de funciones de ventana.
En el siguiente ejemplo, se calcula la relación entre el valor registrado de cada fila de la cantidad de un vendedor y el total de todas las cantidades del vendedor.
select sellerid, qty, ratio_to_report(qty) over() from winsales order by sellerid;
sellerid qty ratio_to_report -------------------------------------- 1 30 0.13953488372093023 1 10 0.046511627906976744 1 10 0.046511627906976744 2 20 0.09302325581395349 2 20 0.09302325581395349 3 30 0.13953488372093023 3 20 0.09302325581395349 3 15 0.06976744186046512 3 10 0.046511627906976744 4 10 0.046511627906976744 4 40 0.18604651162790697
En el siguiente ejemplo, se calculan las relaciones de porcentaje de las cantidades de ventas para vendedor por partición.
select sellerid, qty, ratio_to_report(qty) over(partition by sellerid) from winsales;
sellerid qty ratio_to_report ------------------------------------------- 2 20 0.5 2 20 0.5 4 40 0.8 4 10 0.2 1 10 0.2 1 30 0.6 1 10 0.2 3 10 0.13333333333333333 3 15 0.2 3 20 0.26666666666666666 3 30 0.4