group by fehler

Status
Nicht offen für weitere Antworten.

noisebreath

Bekanntes Mitglied
hi der sagt mir hier bei meiner sql anweisung :

********** Fehler **********

ERROR: aggregates not allowed in GROUP BY clause
SQL Status:42803
Kontext:SQL statement " SELECT CASE WHEN avg(rv.value) IS NULL THEN 1 ELSE 0 END AS sorter, 0 AS isnormvalue, bases.name,'0' AS firstname, avg(rv.value) AS value, rv.testid, rv.testperiodid, ta.gender, tate.agegroupid FROM testperiods_bases bate, talents_testperiods tate, talents ta, resultsview rv, bases WHERE bate.testperiodid = $1 AND rv.testperiodid = $1 AND tate.testperiodid = $1 AND ta.id = tate.talentid AND tate.talentid = rv.talentid AND bate.baseid = bases.id AND bases.basegroupid = $2 AND tate.baseid = bate.baseid GROUP BY sorter, isnormvalue, bases.name, firstname, avg(rv.value), rv.testid, rv.testperiodid, ta.gender, tate.agegroupid ORDER BY testid, agegroupid, gender, value"
PL/pgSQL function "calculatebasegroupranking" line 5 at FOR over SELECT rows

Code:
DECLARE 
	currentrow record;

BEGIN
FOR currentrow IN SELECT 
	CASE WHEN avg(rv.value) IS NULL THEN 1 ELSE 0 END AS sorter, 
	
	0 AS isnormvalue, bases.name,'0' AS firstname, avg(rv.value) AS value, rv.testid, rv.testperiodid, ta.gender, tate.agegroupid
	FROM testperiods_bases bate, talents_testperiods tate, talents ta, resultsview rv, bases
	WHERE bate.testperiodid = var_testperiodid AND rv.testperiodid = var_testperiodid AND tate.testperiodid = var_testperiodid 
	AND ta.id = tate.talentid AND tate.talentid = rv.talentid AND bate.baseid = bases.id AND bases.basegroupid = var_basegroupid AND tate.baseid = bate.baseid
	GROUP BY sorter, isnormvalue, bases.name, firstname, value, rv.testid, rv.testperiodid, ta.gender, tate.agegroupid ORDER BY testid, agegroupid, gender, value LOOP

   return next currentrow; 
END LOOP; 
return; 
END;

Aufruf:
select * from calculatebasegroupranking(20041,3) as (sorter integer, isnormalue integer ,lastname text, firstname text, value numeric, testid integer, testperiodid integer, gender integer, agegroupid integer) order by testid,agegroupid ASC



Versteh den fehler nicht. kann mir jemand weiterhelfen?
 
in Group By kannst du kein avg(rv.value) == value schreiben, was sollte das mit sorter zu tun haben?
 
ich weiß nicht was das für ein Wert ist, wofür du ihn brauchst und wieso heute Dienstag ist,
dennoch darf kein Avg(x) in einem Group By stehen,

gib doch ein Beispiel für alle Zahlen und was die DB-Anfrage daraus errechnen soll,
mir fällt zu Avg(x) im Group By jedenfalls nix sinnvolles ein,
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben