ich konnte einen ähnlichen Artikel noch nicht finden und stelle deshalb diese Frage auf die Gefahr hin, dass die Antwort hier schon irgendwo existiert:
Ich habe eine Tabelle, die ungefähr so aussieht:
ID datum wert
Und möchte darin den Durchschnitt der Summe aller Werte für einen Monat herausfinden. Im Ergebnis muss auch der Monat angezeigt werden, was die Sache irgendwie zu kompliziert für mich macht:
SELECT MONTH(date1) AS month, AVG(sum\_money) AS money
FROM (SELECT SUM(money) AS sum\_money, date1
FROM mobile
WHERE YEAR(date1)=2009
GROUP BY MONTH(date1)
ORDER BY MONTH(date1))
AS mobile
Das funktioniert nicht und ich weiß mit der Fehlermeldung nichts anzufangen:
#1140 - Mixing of GROUP columns (MIN(),MAX(),COUNT(),…) with no GROUP columns is illegal if there is no GROUP BY clause
Also ich glaube, ich hab mich irgendwie falsch ausgedrückt, aber ich habe hier eine Abfrage, die anscheinend das richtige Ergebnis liefert und zur Abwechslung mal funktioniert. Vielleicht ist das eine Hilfe für alle, die so etwas Ähnliches suchen:
SELECT vertrag\_id, monat, dwert, wert
FROM (
SELECT datum, vertrag\_id, MONTH(datum) AS monat,
AVG(sum\_wert) AS dwert, wert
FROM (
SELECT vertrag\_id, datum, MONTH(datum) ,
SUM(wert) AS sum\_wert, wert
FROM mobil
GROUP BY vertrag\_id
) AS mobil
GROUP BY MONTH(datum)
) AS m
WHERE YEAR(datum)=2009
GROUP BY MONTH(datum)
ORDER BY MONTH(datum)