Laden...

Query Frage.

Erstellt von regen vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.677 Views
R
regen Themenstarter:in
494 Beiträge seit 2006
vor 16 Jahren
Query Frage.

Sql Server Express:

Ich hab eine Tabelle die sieht etwa so aus:

Datetime - Wert
05.03.2007 00:00:00 - 2
05.03.2007 00:00:01 - 2,1
05.03.2007 00:00:10 - 2,2
05.03.2007 00:00:50 - 1,8
05.03.2007 00:01:10 - 2
05.03.2007 00:02:00 - 3
05.03.2007 00:03:01 - 2
05.03.2007 00:03:08 - 1,95
05.03.2007 00:04:10 - 2,01
05.03.2007 00:04:35 - 2,1
usw usw
10.03.2007 19:04:35 - 2,1
...

Nun möchte ich in einer Abfrage folgendes Ergebnis erhalten:

05.03.2007 00:01:00 - Durchschnitt( zw. 00:00:00-00:00:59)
05.03.2007 00:02:00 - Durchschnitt( zw. 00:01:00-00:01:59)
05.03.2007 00:03:00 - Durchschnitt( zw. 00:02:00-00:02:59)
05.03.2007 00:04:00 - Durchschnitt( zw. 00:03:00-00:03:59)
...

Also alles was innerhalb einer Minute passiert ist, zusammengefasst.
Ist das mit einer Sql Abfrage möglich oder muss ich sowas mit Programmcode machen?

432 Beiträge seit 2005
vor 16 Jahren

hi regen,

das hier könnte sein, was du brauchst:


select 
   datepart(year, Beginn), 
   datepart(month, Beginn),
   datepart(day, Beginn),
   datepart(minute, Beginn),
   avg([die wertespalte])

from 
   meineTabelle

where 
   (irgendwelche sonstige kriterien)

group by 
   datepart(year, Beginn), 
   datepart(month, Beginn),
   datepart(day, Beginn),
   datepart(minute, Beginn)

zwei nachteile:

  • nicht genannte minuten kommen auch nicht vor
  • du musst die gruppierten einzelteile zur anzeige wieder zusammenfügen

hth
ron

P
554 Beiträge seit 2005
vor 16 Jahren

Hallo,

ich würde das auch per Programmcode lösen, da du es so formatieren kannst wie du willst.

Achtung! - Hinter dir ist ein dreiköpfiger Affe!

R
regen Themenstarter:in
494 Beiträge seit 2006
vor 16 Jahren

Hallo,
@citizen.ron:
Die Lösung sieht schonmal ganz gut aus. Eine neue Datetime kann man nicht wieder zusammenbauen?!

@powerslave:
Ja natürlich kann man da machen was man will, aber auf Kosten von Geschwindigkeit. Die Anzahl der Einträge befindet sich größenordnungsmäßig im Millionenbereich.

432 Beiträge seit 2005
vor 16 Jahren

hi regen

Eine neue Datetime kann man nicht wieder zusammenbauen?!

doch, mit

DateTime d = new DateTime(jahr, monat, tag, std, min, 0)

übrigens hatte ich in meiner gruppierung die stunde vergessen, also:


select 
   datepart(year, Beginn) as Jahr, 
   datepart(month, Beginn) as Monat,
   datepart(day, Beginn) as Tag,
   datepart(hour, Beginn) as Std,
   datepart(minute, Beginn) as [Min],
   avg([die wertespalte])

from 
   meineTabelle

where 
   (irgendwelche sonstige kriterien)

group by 
   datepart(year, Beginn), 
   datepart(month, Beginn),
   datepart(day, Beginn),
   datepart(hour, Beginn)
   datepart(minute, Beginn)

und dann oben genannte umwandlung.

gruß
ron