Liebe Mitdenker,
liebe Wissende,
liebe Neugierige,
ja!
Und noch eins drauf für die nächste Stufe...
Ich poste daher meine Lösung (sie ist eigentlich nur Deine, übersetzt auf meine Tabellenstruktur...) nochmal. Sie benutzt im Unterschied zu Klaus' Lösung eine Datetime-Spalte.
--Tabelle:
CREATE TABLE IF NOT EXISTSinno_gruppieren
(
id
INT(11) NOT NULL AUTO_INCREMENT,
datum
DATETIME NOT NULL,
wert
INT(11) NOT NULL,
PRIMARY KEY (id
)
)
COMMENT='Übungen zum Filtern, Gruppieren, Summieren etc'
COLLATE='utf8_general_ci'
ENGINE=InnoDB
CHECKSUM=1
AUTO_INCREMENT=1;--Query:
select concat(year(tageswerte.datum),'-',month(tageswerte.datum)) as monat,
sum(maxwert) as monatssumme
from (select datum, date(t1.datum) as tag, max(wert) as maxwert
from inno_gruppieren t1 group by tag) as tageswerte group by monat;
>
> Musterdaten:
>
> ~~~text
> id;datum;wert
> 1;2014-01-09 10:51:24;10
> 2;2014-01-09 10:52:23;15
> 3;2014-01-09 10:54:59;9
> 4;2014-02-09 11:00:54;0
> 5;2014-02-01 11:01:11;1
> 6;2014-02-01 10:30:00;5
> 7;2014-02-02 11:03:14;33
> 8;2014-02-07 11:03:47;20
> 9;2014-02-07 11:04:08;12
> 10;2014-02-07 11:04:32;17
> 11;2014-01-07 11:04:54;2
> 12;2014-02-07 11:05:16;45
> 13;2014-02-08 11:05:34;3
> 14;2014-04-17 11:05:54;22
> 15;2014-04-17 11:06:19;80
> 16;2014-01-17 11:06:42;1
> 17;2014-04-09 11:07:02;13
> 18;2014-05-01 11:07:31;22
> 19;2014-05-22 21:07:50;44
> 20;2014-05-01 11:08:14;7
> 21;2014-05-22 11:08:35;13
> 22;2014-05-01 11:08:59;88
>
>
Ergebnis:
"monat";"monatssumme"
"2014-1";"18"
"2014-2";"86"
"2014-4";"93"
"2014-5";"132"
>
>
> Was hier besser deutlich wird ist, dass man im äußeren select den Temporärbezeichner der Unterabfrage benutzen muss, wenn man keine Fehlermeldung kassieren will:
>
> ~~~sql
> /* SQL Fehler (1054): Unknown column 'datum' in 'field list' */
>
>
select sum(liste.monatssumme) as totalamount
from (select concat(year(tageswerte.datum),'-',month(tageswerte.datum)) as monat,
sum(maxwert) as monatssumme
from (select datum, date(t1.datum) as tag, max(wert) as maxwert
from inno_gruppieren t1 group by tag) as tageswerte group by monat) as liste;
So langsam macht das spaß ;-)
Wie weit kann man das Spiel wohl treiben?
Irgendwann wird wohl der DB-Server stehenbleiben?
Spirituelle Grüße
Euer Robert
Möge der Forumsgeist wiederbelebt werden!