Ich mache Vergangenheit Papiere für meine Datenbank-Prüfung, und ich habe über die folgende Frage kommen:SQL COUNT Mit
Da das Schema:
- Bahnhof (Name, Stadt) (Name ist der Schlüssel)
- Zug (Nummer, Tag, Abflugbahnhof, Ankunftsbahnhof, Abflugzeit, Ankunftszeit) (Nummer und Tag sind ein zusammengesetzter Schlüssel und Tag in {Montag, Dienstag, ..., Sund ay}.
- Dienst (Zugnummer, train_type, food_served, first_class) (train_number Schlüssel ist, und first_class "ja" oder "nein"
Die Abfrage ist.
finden Stationen, von denen bei mindestens 20 Züge mit erstklassigen Service Abfahrt nach Edinburgh jede Woche an Wochentagen
Meine Antwort darauf ist:.
WITH fstClass AS (
SELECT *
FROM Train T, Service S
WHERE T.number = S.train_number AND T.arrive_station = "Edinburgh"
AND S.first_class = 'yes'
AND T.day LIKE 'S%'
)
SELECT f.depart_station
FROM fstclass f
GROUP by f.depart_airport
HAVING COUNT(*) >= 20;
Ich diskutiere mit meinem Freund, ob das richtig ist, und ich persönlich sehe nicht, was daran falsch sein könnte. Daher würde jede Einsicht, ob dies korrekt und/oder besser erscheint, sehr geschätzt. Sind temporäre Tabellen eine gute Möglichkeit, SQL-Abfragen auszuführen?
Meiner Meinung nach ist jede Abfrage, die ein Komma in der 'from' Klausel automatisch falsch ist. –
Was ist der Zweck der Service-Tabelle? Wie ist seine Beziehung zu 'Train'? Kann ein einzelner "Train" mehrere "Service" -Reihen haben? Was bedeutet es, wenn mehrere 'Service'-Zeilen mit den gleichen Daten für die gleiche Eltern-'Train'-Zeile vorhanden sind? – Dai
@GordonLinoff Wie würdest du vorschlagen, dass ich dies anpasse? Wenn ich anstelle von 'FROM Train T, Station S'' FROM Train T JOIN-Station S ON T.number = S.train_number' verwende, ist das für dich korrekter? :) – user3186023