Database Reference
In-Depth Information
SELECT venue_id, count(*)
SELECT venue_id, count(*)
OVER (PARTITION BY venue_id)
FROM events
FROM events
GROUP BY venue_id
ORDER BY venue_id;
ORDER BY venue_id;
venue_id | count
venue_id | count
----------+-------
----------+-------
1 | 1
1 | 1
2 | 2
2 | 2
2 | 2
3 | 1
| 3
3 | 1
| 3
| 3
| 3
Abbildung 4: Die Ergebnisse der Fensterfunktionen lassen die Ergebnisse pro Gruppe
nicht einbrechen.
Während eine
GROUP BY
-Klausel einen Datensatz für jeden passenden Grup-
penwert zurückgibt, kann eine Fensterfunktion einen separaten Datensatz
für jede Zeile zurückliefern. Eine visuelle Darstellung sehen Sie in Abbil-
dung 4,
Die Ergebnisse der Fensterfunktionen lassen die Ergebnisse pro Grup-
pe nicht einbrechen.
, auf Seite 28. Sehen wir uns an, was Fensterfunktionen
leisten können.
Fensterfunktionen geben alle Treffer zurück und replizieren die Ergebnisse
jeder Aggregatfunktion.
SELECT
title, count(
*
) OVER (PARTITION
BY
venue
_
id)
FROM
events;
Wir betrachten
PARTITION BY
gerne als einen Verwandten von
GROUP BY
,doch
statt die Ergebnisse aus der
SELECT
-Attributliste zu erzeugen (und damit zu
einer kleineren Ergebnisliste zusammenzufassen), gibt sie die gruppierten
Werte wie jedes andere Feld zurück (die Berechnung erfolgt für die gruppierte
Variable, ist ansonsten aber einfach ein weiteres Attribut). Oder, im SQL-