Guten Tag!
Ich verwende Postgres (neueste Version) als Datenbanksystem.
Leider muss ich etwas ausholen um mein Problem zu schildern!
Es geht um folgende 2 Tabellen:
ims_item : (beinhaltet alle Items)
------------------
item_id,
item_typ,
....
ims_statistic : (beinhaltet mehrere Eintraege (oder keine) zu einem Item )
------------------
object_identifier, (=item_id)
trennschaerfe,
diff_occ,
...
Zusätzlich benutze ich noch 2 Tabellen, die für die Itemauswahl nötig, aber nicht weiter relevant für die Problemstellung sind:
ims_ritemdomain und ims_ritemoperator.
Ich brauche nun einen SELECT-Befehl der mir alle Items nach gewünschten Anforderung (ritemdomain/ritemoperator) mit den Durchschnitten (AVG) der vohandenen trennschaerfe und diff_occ holt.
Derzeit habe ich eine Lösung mit 2 SELECT-Befehlen. Ich würde aber gerne meine Auswahl nach den beiden Statistikwerten sortieren, was leider nicht im nachhinein geschehen darf.
Nun mein SQL-Befehl:
SELECT i.item_id,..., AVG(trennschaerfe) AS trennschaerfe, AVG(diff_occ) AS diff_occ
FROM ims_item i INNER JOIN ims_ritemdomain rid ON (...)
INNER JOIN ims_ritemoperator rio ON (...)
LEFT OUTER JOIN ims_statistic s ON (s.object_identifier=i.item_id)
ORDER BY trennschaerfe DESC
Dieser produziert folgenden Fehler:
FEHLER: Spalte »i.item_id« muss in der GROUP-BY-Klausel erscheinen
Kann ich anders an die Problmstellung gehen oder ist nen Fehle im SQL-Befehl?
Ich habe schon an eine Postgres-Funktion gedacht die mir den Durchschnitt liefert, würde das funktionieren ?