Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
La funzione finestra COUNT conta le righe definite dall'espressione.
La funzione COUNT ha due variazioni. COUNT(*) conta tutte le righe nella tabella di destinazione indipendentemente dal fatto che includano valori null o no. COUNT(espressione) calcola il numero di righe con valori non NULL in una colonna o espressione specifica.
Sintassi
COUNT ( * | [ ALL ] expression) OVER ( [ PARTITION BY expr_list ] [ ORDER BY order_list frame_clause ] )
Argomenti
- expression
-
L'espressione o colonna di destinazione su cui viene eseguita la funzione.
- ALL
-
Con l'argomento ALL, la funzione mantiene tutti i valori duplicati dall'espressione per il conteggio. ALL è il valore predefinito. DISTINCT non è supportato.
- OVER
-
Specifica le clausole finestra per le funzioni di aggregazione. La clausola OVER distingue le funzioni di aggregazione delle finestre dalle normali funzioni di aggregazione dell'insieme.
- PARTITION BY expr_list
-
Definisce la finestra per la funzione COUNT in termini di una o più espressioni.
- ORDER BY order_list
-
Ordina le righe all'interno di ogni partizione. Se non viene specificato nessun PARTITION BY, ORDER BY utilizza l'intera tabella.
- frame_clause
-
Se una clausola ORDER BY viene utilizzata per una funzione di aggregazione, è necessaria una clausola del frame esplicita. La clausola frame raffina l'insieme di righe in una finestra della funzione, includendo o escludendo insieme di righe all'interno del risultato ordinato. La clausola frame è composta dalla parola chiave ROWS e dagli specificatori associati. Per informazioni, consultare Riepilogo della sintassi della funzione finestra.
Tipi di dati
La funzione COUNT supporta tutti i tipi di dati degli argomenti.
Il tipo di restituzione supportato dalla funzione COUNT è BIGINT.
Esempi
Nel seguente esempio sono mostrati l'ID vendite, la quantità e il conteggio di tutte le righe dall'inizio della finestra dei dati:
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)
Per una descrizione della tabella WINSALES, consultare Tabella di esempio per gli esempi della funzione finestra.
Nel seguente esempio sono mostrati l'ID vendite, la quantità e il conteggio delle righe non-null dall'inizio della finestra dei dati. (Nella tabella WINSALES, la colonna QTY_SHIPPED ne contiene alcune.) NULLs
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)