"We are back" « oc.at

mysql: GROUP BY aber mehrere verschiedene werte

kleinerChemiker 20.12.2004 - 13:55 1289 6
Posts

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4303
im table steht u.a. der unixtimestamp. da ungefähr einmal pro minute ein wert eingefügt wird, sind die natürlich alle anders. nun würde ich gerne mehrere zeilen gruppieren, z.b. in 5-minuten intervallen (sprich ich geb nen startwert an und ein intervall und dann wird vom startwert ausgehend alles in diese intervalle gruppiert [startwert+n*300; n=1,2,3,4,...]). kann man das direkt mittels mysql machen oder muß ich alles auslesen und dann mit php gruppieren?

tia

MIK

Moesli

goes Linux
Avatar
Registered: Sep 2002
Location: Salzburg
Posts: 1328
Zitat von kleinerChemiker
im table steht u.a. der unixtimestamp. da ungefähr einmal pro minute ein wert eingefügt wird, sind die natürlich alle anders. nun würde ich gerne mehrere zeilen gruppieren, z.b. in 5-minuten intervallen (sprich ich geb nen startwert an und ein intervall und dann wird vom startwert ausgehend alles in diese intervalle gruppiert [startwert+n*300; n=1,2,3,4,...]). kann man das direkt mittels mysql machen oder muß ich alles auslesen und dann mit php gruppieren?

tia

MIK

mittels mysql ist mir keine möglichkeit bekannt vielleicht gibt es sie,.. ich machs immer mit php,..

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
5 minuten sind 5*60=300, also nimmst einfach
select FLOOR(`timestamp`/300) as `grouped` [...] GROUB BY `grouped`

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4303
doppelpost :(
Bearbeitet von kleinerChemiker am 20.12.2004, 17:43 (doppelpost)

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4303
thx, eine gute idee. und damit man den startpunkt des intervalls auch noch festlegen kann, könnte man doch auch gleich SELECT FLOOR(('timestamp'-'starttime')/300) AS ....

MIK

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von kleinerChemiker
thx, eine gute idee. und damit man den startpunkt des intervalls auch noch festlegen kann, könnte man doch auch gleich SELECT FLOOR(('timestamp'-'starttime')/300) AS ....

MIK
ne, das funktioniert irgendwie nicht, den start/endpunkt musst eher mit "where timestamp<... and timestamp>..."

ps: ' funkt bei feldnamen imho nicht, nur `

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4303
hmm, schade daß es nicht geht. weshalb ich das nicht ins where packen wollte ist, weil wenn ich z.b. 10 oder 15 minuten nehme, dann kanns liecht vorkommen, daß in die erste gruppe nur ein wert einfließt, weil der zweite schon zur nächsten gruppe kommt. subtrahiere ich aber den anfangspunkt vom timestamp, sollten es immer die gleiche anzahl sein (wenn die abstände zwischen den einzelnen timestamps gleich wären)

MIK
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz