Wer kennt sich mit SQL aus, wieso kommt hier eine Fehlermeldung?
4 Antworten
tripduration bezieht sich auf eine einzelne Zeile der Datenbank, nicht auf das Aggregat durch die Gruppierung. Vielleicht solltest du SUM(tripduration) oder so machen.
Group generiert dann in anderen Spalten eine Menge von Werten, nicht nur einen einzigen Wert. Mit der Gesamtheit dieser Werte musst du was machen - Summe, Durchschnitt oder sowas. Aktuell versuchst du, mit einem einzigen Wert der Menge an Werten was zu machen, und dann kapiert das SQL natürlich nicht.
ach sql interressiert das nicht in jeder datenbank , meist wird einfach die erste zeile genommen . :)
Wie lautet dann die Lösung zur Aufgabe? Dort steht ja explizit gruppiere nach usertype. Wenn ich jetzt noch nach teipduration gruppiere mach ich ja sicher was falsch…
In der Aufgabe steht auch was von "SUMME der Tripdauer" - die wirst du wohl dann vom dem DBMS berechnen lassen müssen.
Gefällt mir, bei welchem Anbieter bist Du?
Sollte zwischen Mitte und oben liegen.
Oder irgentwo in deiner Datenbank an sich.
Dein Programm meinte ich nicht, Serveranbieter. vServer FTP MySQL Anbieter.
Hmm ka. Ist von meinem Dozenten
Kann ich Dir nicht weiterhelfen...Schönen Tag noch. Zuwenig Info
Du darfst bei einem GROUP BY oben im SELECT keine Spalten einfach so benutzen. Entweder müssen sie Teil der Gruppierung sein oder du musst eine Aggregats-Funktion anwenden. So ist nicht klar, welche Zeile genommen werden soll.
Wenn ich nach usertype gruppiere, welche tripduration soll ich denn nehmen, wenn es unter usertype mehrere gibt? Die Gruppierung sagt, dass pro usertype nur eine Zeile da sein darf aber im Zweifel gibt es unter einem usertype mehrere tripdurations.
Ergo musst du entweder auch nach der tripduration gruppieren, was du in dem Beispiel vermutlich nicht möchtest oder du musst eine Aggregrats-Funktion anwenden wie MIN, MAX, SUM, AVG etc. In deinem Fall wohl SUM.
Je nachdem was du machen willst kannst du entweder tripduration ins Group by aufnehmen:
Group by usertype, tripduration
Oder du nimmst alle Tripduration eines Usertypes für die Berechnung:
(Sum(Tripduration)/60*60*24)
Oder du nimmst den Durchschnitt:
(Average(Tripduration)/60*60*24)
Die Aufgabe sagt ja aus Gruppieren sie nach usertype. Punkt. Nichts mehr.
Ah, dass da eine Aufgabe in den Kommentaren steht hab ich gar nicht gesehen.
Aber da steht eh, dass du die Summe berechnen sollst, also nimmst du meinen zweiten Lösungsvorschlag und gruppierst eben nur nach usertype
Check ich net was du meinst