Hypothetische Setfunktionen

Beispiel für eine hypothetische Setfunktion:
SELECT grp, percent_rank(1500) WITHIN GROUP(ORDER BY sal) 
percent_rankPR, rank(1500) WITHIN GROUP(ORDER BY sal) rank, COUNT(*) 
FROM salary_info GROUP BY grp (ORDER BY grp);
GRP PR  RANK COUNT(*)
--- --- ---- --------
1   0.0000000000000000 1    2
2   1.0000000000000000 5    4
3   0.5000000000000000 3    4
(3 rows)
Ermitteln wir nun die Schritte. Sehen Sie sich die Daten aus der Tabelle "salary_info" an:
GRP A  SAL
--- -- ----
1   1  3000
1   2  3000
2   3  800
2   4  950
2   5  1100
2   6  1300
3   7  1250
3   8  1250
3   9  1500
3   10 1600

Für die Gruppe mit dem GRP-Wert 3 sieht das nach dem Spaltenwert geordnete “sal”-Set folgendermaßen aus: {1250, 1250, 1500, 1600}. Das Argument von percent_rank gibt eine hypothetische Zeile an. Diese wird dem Set “sal” hinzugefügt. Jetzt sieht das geordnete “sal”-Set folgendermaßen aus: {1250, 1250, 1500, 1500, 1600}.

percent_rank(1500) ist (Rang von “1500” im “sal”-Set -1)/ (Anzahl Zeilen in Gruppe -1) = 3 – 1 / 4 = 2/4 = 0.5

Beispiel für eine hypothetische Setfunktion mit mehreren Argumenten:
SELECT region, rank(1800, 15) WITHIN GROUP(ORDER BY amt, 
profit_margin), dense_rank(1800, 15) WITHIN GROUP(ORDER BY amt, 
profit_margin) FROM sales_tbl GROUP BY region;
 REGION    | RANK | DENSE_RANK 
---------- +------+------------
 Central   |    5 |         4
 Northeast |    3 |         3 
 Northwest |    1 |         1 
 Southwest |    1 |         1
(4 rows)