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.
Función de ventana COUNT
La función de ventana COUNT cuenta las filas definidas por la expresión.
La función COUNT tiene dos variaciones. COUNT(*) cuenta todas las filas en la tabla destino, incluya o no valores nulos. COUNT (expresión) computa la cantidad de filas con valores no NULL en una columna o expresión específicas.
Sintaxis
COUNT ( * | [ ALL ] expression) OVER ( [ PARTITION BY expr_list ] [ ORDER BY order_list frame_clause ] )
Argumentos
- expression
-
La columna o expresión de destino sobre la que opera la función.
- ALL
-
Con el argumento ALL, la función retiene todos los valores duplicados de la expresión para el conteo. El valor predeterminado es ALL. DISTINCT no se admite.
- OVER
-
Especifica las cláusulas de ventana para las funciones de agregación. La cláusula OVER distingue funciones de agregación de ventana de las funciones de agregación de conjuntos normales.
- PARTITION BY expr_list
-
Define la ventana para la función COUNT en términos de una o más expresiones.
- ORDER BY order_list
-
Ordena las filas dentro de cada partición. Si no se especifica PARTITION BY, ORDER BY utiliza toda la tabla.
- frame_clause
-
Si se utiliza una cláusula ORDER BY para una función de agregación, se necesita una cláusula de marco explícita. La cláusula de marco limita el conjunto de filas en una ventana de función e incluye o excluye conjuntos de filas dentro del resultado ordenado. La cláusula de marco consta de la palabra clave ROWS y de los especificadores correspondientes. Consulte Resumen de la sintaxis de la función de ventana.
Tipos de datos
La función COUNT admite todos los tipos de datos de argumentos.
El tipo de retorno compatible con la función COUNT es BIGINT.
Ejemplos
En el siguiente ejemplo, se muestran los ID de ventas, la cantidad y el conteo de todas las filas desde el comienzo de la ventana de datos:
select salesid, qty, count(*) over (order by salesid rows unbounded preceding) as count from winsales order by salesid; salesid | qty | count ---------+-----+----- 10001 | 10 | 1 10005 | 30 | 2 10006 | 10 | 3 20001 | 20 | 4 20002 | 20 | 5 30001 | 10 | 6 30003 | 15 | 7 30004 | 20 | 8 30007 | 30 | 9 40001 | 40 | 10 40005 | 10 | 11 (11 rows)
Para ver una descripción de la tabla WINSALES, consulte Tabla de muestra para ejemplos de funciones de ventana.
En el siguiente ejemplo, se muestran los ID de ventas, la cantidad y el conteo de las filas no nulas desde el comienzo de la ventana de datos. (En la tabla WINSALES, la columna QTY_SHIPPED tiene algunos valores NULL.)
select salesid, qty, qty_shipped, count(qty_shipped) over (order by salesid rows unbounded preceding) as count from winsales order by salesid; salesid | qty | qty_shipped | count ---------+-----+-------------+------- 10001 | 10 | 10 | 1 10005 | 30 | | 1 10006 | 10 | | 1 20001 | 20 | 20 | 2 20002 | 20 | 20 | 3 30001 | 10 | 10 | 4 30003 | 15 | | 4 30004 | 20 | | 4 30007 | 30 | | 4 40001 | 40 | | 4 40005 | 10 | 10 | 5 (11 rows)