# Datensätze Pro Monat zusammenaddieren (MySQL)



## MultiStorm (7. Juli 2008)

Hallo erstmal ..
Ich habe folgendes vor:
Ich habe einen Gültigkeitszeitraum,
z.b. 01.01.2008 - 31.03.2008
ich habe eine Tabelle die aus 3 Spalten besteht
Begin der Arbeitszeit (dd.mm.yyyy 00:00:00)
Ende der Arbeitszeit (dd.mm.yyyy 00:00:00)
Stunden
Ich möchte nun Alle Datensätze inerhalb des Zeitraums haben
aber ich möchte diese als SUMME (Stunden) habe und Zwar Pro Monat...

in diesem beispiel Sollte das ergebnis also so aussehen

Jan 2008 = 35 h
Feb 2008 = 42,5 h
März 2008 = 28,4 h

wie könnte man eine Solche abfrage Realiesieren ?
Danke schonmal im Vorraus


----------



## planb2000 (7. Juli 2008)

Hallo,

-- Bei mir heißen die Spalten evtl. anders, aber prinizipiell würde ich es für ein Jahr so machen
-- Das Problem fängt an wenn es über mehrere Jahre gehen soll, es gibt bestimmt noch mehr Möglichkeiten kenne mich so auf die Schnelle aber nicht mit der Foramtierung bei MySQL aus. SOllte aber als Idee so reichen.

Das steht in meiner TAbelle:
a_begin                  ,a_end                     ,a_hour
2008-01-01 01:00:00,2008-01-01 09:00:00,8
2008-01-02 02:00:00,2008-01-02 06:00:00,4
2007-01-02 02:00:00,2007-01-02 06:00:00,4
2007-01-03 02:00:00,2007-01-03 06:00:00,4


```
-- Tabellebdefiniton bei mir
-- CREATE TABLE `test`.`t_time` (`a_begin` TIMESTAMP, `a_end` TIMESTAMP, `a_hour` INT UNSIGNED)
-- Wenn das Jahr egal ist reicht es den Monat zu extrahieren
select 
  extract(month from a_begin) monat
, sum(a_hour) stunden_gesamt from t_time
group by  
  extract(month from a_begin)


-- Wenn das Jahr nicht egal ist Jahr UND den Monat extrahieren
select
 extract(year from a_begin) jahr 
,extract(month from a_begin) monat
, sum(a_hour) stunden_gesamt from t_time
group by  
				extract(year from a_begin) 
			, extract(month from a_begin)
```

Ausgaben der 2ten Lösung:
jahr     ,monat,stunden_gesamt
2007   ,1       ,8
2008   ,1       ,12



Viele Grüße


----------



## MultiStorm (7. Juli 2008)

jo, schaut schonmal sehr gut aus ...
Habe mich für deine Lösung 2 Entschieden ...

mein SQL String:

```
SELECT extract(year FROM Start_Work) jahr, extract(month FROM Start_Work) monat, sum(Stunden_Gesamt) stunden_gesamt FROM PA_Buchungen GROUP BY extract(year FROM Start_Work), extract(month FROM Start_Work)
```

Das Ergebnis ist soweit richtig ...
aber ich muß das ganze noch begränzen ....
kann ich noch zusätzlich über between den zeitraum eingränzen ?
weil ich ja nicht immer daten für ein Jahr haben will sondern für einen Frei wählbaren Zeitraum

MFG Sascha


----------

