Database Reference
In-Depth Information
SELECT * FROM crosstab(
'SELECT extract(year from starts) as year,
extract(month from starts) as month, count( * )
FROM events
GROUP BY year, month' ,
'SELECT * FROM month _ count'
);
ERROR: a column definition list is required for functions returning "record"
Ups, eine Fehlermeldung.
Das hört sich etwas kryptisch an, bedeutet aber, dass die Funktion eine Rei-
he von Datensätzen (Zeilen) zurückgibt und nicht weiß, wie sie sie benennen
soll. Tatsächlich weiß sie nicht einmal, um welche Datentypen es sich han-
delt.
Denken Sie daran, dass die Pivot-Tabelle die Monate als Kategorie verwendet,
aber diese Monate sind einfach nur Integerwerte. Daher definieren wir sie wie
folgt:
SELECT * FROM crosstab(
'SELECT extract(year from starts) as year,
extract(month from starts) as month, count( * )
FROM events
GROUP BY year, month' ,
'SELECT * FROM month _ count'
) AS (
year int ,
jan int , feb int , mar int , apr int , may int , jun int ,
jul int , aug int , sep int , oct int , nov int , dec int
) ORDER BY YEAR ;
Wir haben eine Spalte für das Jahr (die Zeilen-ID) und zwölf weitere Spalten
für die Monate.
year | jan | feb | mar | apr | may | jun | jul | aug | sep | oct | nov | dec
-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----
2012 |
|
5 |
|
1 |
1 |
|
|
|
|
|
|
1
Fügen Sie zusätzliche Events für ein anderes Jahr ein, um sich auch de-
ren Anzahl ausgeben zu lassen. Führen Sie die crosstab-Funktion aus und
genießen Sie Ihren Kalender.
Was wir am zweiten Tag gelernt haben
Heute haben wir die Grundlagen von PostgreSQL abgeschlossen. Wir begin-
nen zu erkennen, dass Postgres mehr ist, als einfach nur ein Server zum
Speichern der üblichen Datentypen und ihre Abfrage. Es ist eine Datenbank-
Management-Engine, mit der man die zurückgelieferten Daten umformatie-
Search WWH ::




Custom Search