Database Reference
In-Depth Information
Ein SQL-Tipp am Rande: Statt die
venue
_
id
explizit anzugeben, können Sie
mit einem Sub-
SELECT
besser lesbaren Titel verwenden. Wenn also
Moby
im
Crystal Ballroom
spielt, können Sie die
venue
_
id
wie folgt setzen:
INSERT INTO
events (title, starts, ends, venue
_
id)
VALUES
(
'Moby'
,
'2012-02-06 21:00'
,
'2012-02-06 23:00'
,(
SELECT
venue
_
id
FROM
venues
WHERE
name =
'Crystal Ballroom'
)
);
Füllen Sie die events-Tabelle mit den folgenden Daten auf (um
Valentine's
Day
in PostgreSQL einzugeben, ersetzen Sie das Apostroph durch zwei, also
beispielsweise
Heaven”s Gate
):
title | starts | ends | venue
-----------------+---------------------+---------------------+---------------
Wedding | 2012-02-26 21:00:00 | 2012-02-26 23:00:00 | Voodoo Donuts
Dinner with Mom | 2012-02-26 18:00:00 | 2012-02-26 20:30:00 | My Place
Valentine's Day | 2012-02-14 00:00:00 | 2012-02-14 23:59:00 |
Nachdem wir unsere Daten eingefügt haben, wollen wir einige Aggregat-Que-
ries ausprobieren. Die einfachste Aggregatfunktion ist
count()
.WennSiedie
Titel zählen (engl. count), die das Wort
Day
enthalten (Hinweis: % ist ein
Platzhalter für
LIKE
-Suchen), wird der Wert 3 zurückgegeben.
SELECT count
(title)
FROM
events
WHERE
title
LIKE
'%Day%'
;
Um die Anfangszeit des ersten und die Endzeit des letzten Events im Crystal
Ballroom zu ermitteln, nutzen Sie
min()
(gibt den kleinsten Wert zurück) und
max()
(gibt den größten Wert zurück).
SELECT
min(starts), max(ends)
FROM
events
INNER JOIN
venues
ON
events.venue
_
id = venues.venue
_
id
WHERE
venues.name =
'Crystal Ballroom'
;
min | max
---------------------+---------------------
2012-02-06 21:00:00 | 2012-02-06 23:00:00
Aggregatfunktionen sind nützlich, für sich genommen aber nur eingeschränkt
sinnvoll. Wenn wir die Anzahl der Events an jedem Veranstaltungsort zählen
wollen, können wir für jede venue-ID Folgendes schreiben: