Differenzbildung mit Datum

dirk_nagel

Mitglied
Liebes Forum,

hat jemand eine Idee, wie ich in das folgende Statement noch eine Unterschiedung nach Datum einbauen kann? Meine zahllosen Versuche endeten leider stets nicht erfolgreich:

Code:
$sql = "SELECT (truncate(AVG(ques1),2))-(truncate(AVG(ques1),2)) As avgdiff
FROM test WHERE usergroup = 1";

Es geht also um die Variable QUES1, die mir (in einer Tabelle) für die Jahre 2009 und 2010 vorliegt. Nun möchte ich, dass sich der erste Klammerausdruck auf das Jahr 2009 bezieht, der zweite auf das Jahr 2010. Vom Mittelwert der Variablen QUES1 aus 2009 wird also der Mittelwert von 2010 abgezogen. Im Augenblick macht das Statement natürlich gar keinen Sinn, weil ohne Datumsbeschränkung immer Null herauskommen muss :p
Das Datum habe ich im Format JJJJ-MM-TT vorliegen.

Vielen herzlichen Dank!
Dirk

Nachtrag:
MySQL-Client-Version: 4.1.9
 
Zuletzt bearbeitet:
Es geht also um die Variable QUES1, die mir (in einer Tabelle) für die Jahre 2009 und 2010 vorliegt. Nun möchte ich, dass sich der erste Klammerausdruck auf das Jahr 2009 bezieht, der zweite auf das Jahr 2010. Vom Mittelwert der Variablen QUES1 aus 2009 wird also der Mittelwert von 2010 abgezogen.

MAch es mit 2 Subselects. In einem Select alle QUES1 aus 2009, im anderen aus 2010
 
Ich liebe solche "kniffelige" Dinger :-D
SQL:
SELECT
TRUNCATE(
SUM(ques1 * (YEAR(datum) = 2009)) / SUM(YEAR(datum) = 2009) - SUM(ques1 * (YEAR(datum) = 2010)) / SUM(YEAR(datum) = 2010)
,2)
AS avgdiff
FROM test GROUP BY NULL;

Hab hier quasi die AVG Funktion ersetzt durch eine eigene Mittelwertbildung, welche aber das Jahr berücksichtigt.
 
Der Vorschlag von CPoly funktioniert perfekt,

... funktioniert fast perfekt.
Beim Nachrechnen einiger Ergebnisse ist mir aufgefallen, dass im Vorschlag von CPoly die Mittelwertberechnung nicht exakt funktioniert, da mit der Vorgehensweise "SUMME / ANZAHL" auch die fehlenden Werte einbezogen werden. Wie könnte ich dieses Problem lösen? Fehlende Werte lasse ich als "NULL" eintragen und werden über AVG auch korrekt ignoriert. In CPolys Vorschlag sind sie aber wieder mit dabei :(
 
Zurück