ich dies nicht zur Arbeit bekommen, tut mir leid, wenn es zu einfach scheint, aber ich freue mich wirklich für Anregungen:Oracle - nicht das gewünschte Ergebnis zu erzielen
Ich habe 3 Tabellen:
UNFÄLLE
(
ACCIDENT_DATE DATE,
DRIVER_CODE VARCHAR2,
DAMAGES NUMBER,
LOCATION_ACCIDENT VARCHAR2,
CAR_CODE VARCHAR2
)
CARS
(
CAR_CODE VARCHAR2,
MODEL VARCHAR2,
YEAR VARCHAR2,
CODE_OWNER VARCHAR2)
// I didn't use this table ,but it was stated so I didn't want to miss anything
PERSON
(
CODE VARCHAR2,
NAME VARCHAR2,
RESIDENCE VARCHAR2
)
Die Abfrage ist:
Display der Name und der Code der Personen, die in den letzten 4 Monaten mehr als zwei Unfälle hatte
ich geschrieben habe:
select a.driver_code,a.accident_date,p.name
from accidents a join p person
on (a.driver_code=p.code)
group by a.accident_date,a.driver_code,p.code
having count (a.accident_date)>2
Es zeigt 1 von 2 Fahrern, die mehr als 2 Unfälle hatten, aber nachdem ich mit meinen Tabellendaten herumgespielt hatte, hieß es, dass sie überhaupt Daten finden könnten.
Ich weiß, dass ich es für die letzten 4 Monate Teil nicht aufgelöst habe, weil ich nicht sicher bin, wie man es benutzt. Das ist meine Idee, obwohl ich weiß, dass dies die Monate zwischen dem Datum des Systems und dem Datum des Unfalls (alle von ihnen) anzeigen (oder annehmen wird), während ich die Treiber in den letzten 4 Monaten anzeigen sollte:
select a.driver_code,a.accident_date,p.name,
sysdate,accident_date,
months_between(sysdate,accident_date)
from accidents a join p person
on (a.driver_code=p.code)
group by a.accident_date,a.driver_code,p.code
having count (a.accident_date)>2
Die allgemeine GROUP geben BY Regel besagt: Wenn eine GROUP BY-Klausel angegeben ist, muss jede Spaltenreferenz in der SELECT-Liste entweder eine Gruppierungsspalte identifizieren oder das Argument einer SET-Funktion sein! – jarlh