Sintassi della famiglia di insiemi ipotetici

La sintassi dell'ipotetica famiglia di insiemi è la seguente:
SELECT fn(<exprlist>) 
WITHIN GROUP ( ORDER BY <value_expression> [asc|desc] [nulls {first | 
last}] [,...])) FROM <from_expr>[GROUP BY <group_expr>]
Queste funzioni sono chiamate funzioni di insiemi ipotetici. Prendono un argomento e un'espressione d'ordine. L'espressione order viene valutata per produrre un insieme ordinato di valori. L'elenco degli argomenti produce una riga R, che è un'ipotetica riga di questa collezione ordinata.
dense_rank
Restituisce il rango denso di un'ipotetica riga all'interno di un gruppo di righe. I ranghi sono numeri interi consecutivi che iniziano con uno. Il numero di argomenti è uguale al numero di espressioni nella clausola ORDER BY di WITHIN GROUP. Gli argomenti di 'dense_rank vengono trattati come se fossero dello stesso tipo di dati (il casting necessario avviene automaticamente) di quello della corrispondente espressione order-by di WITHIN GROUP.
rank
Calcola il rango di un'ipotetica riga all'interno di un gruppo di valori. Le righe con valori uguali per i criteri di classificazione ricevono lo stesso rango.
percent_rank
Calcola il grado percentuale (0 - 1) di un'ipotetica riga all'interno di un gruppo di valori. Restituisce il rango percentuale della riga R se fosse un'ipotetica riga del gruppo aggregante (il rango della riga R-1, diviso per il numero di righe della collezione aumentata).
cume_dist
Calcola la distribuzione cumulativa di un'ipotetica riga all'interno di un gruppo di valori. Restituisce il 'cume_dist di R se si tratta di un'ipotetica riga del gruppo aggregante (il numero di righe precedenti o uguali a R, diviso per il numero di righe del gruppo aggregante).
L'espressione/sottoespressione dell'argomento deve corrispondere esattamente all'espressione GROUP BY. L'esempio seguente non è esatto e restituisce un errore:
SELECT dense_rank(b+a) WITHIN GROUP( order by col) FROM T GROUP BY a+b; 
L'espressione corretta sarebbe la seguente:
SELECT dense_rank(a+b) WITHIN GROUP( order by col) FROM T GROUP BY a+b;
L'esempio seguente non è esatto e restituisce un errore:
SELECT dense_rank(a+b+c) WITHIN GROUP(order by col) FROM T GROUP BY a, 
b+c;
L'espressione corretta sarebbe la seguente:
SELECT dense_rank(a+(b+c)) WITHIN GROUP(order by col) FROM T GROUP BY 
a, b+c;