Ich muss mich nach einem Zeitraum gruppieren, der sich um 10 Minuten aufteilt.
Ich habe diese Abfrage unten, die mir eine Ergebnismenge zurückgibt:
SELECT timestamp
FROM table_1, table_2_shape_polygon
WHERE ST_Within(earthnetworks_geometry_raios, poligono_geometry)
AND timestamp
BETWEEN '2013-04-07 15:30:00' AND '2013-04-07 16:50:00'
AND type = 0
AND id_polygon = 2
Meine Ergebnismenge sieht folgendermaßen aus:
"2013-04-07 15:30:55"
"2013-04-07 15:32:52"
"2013-04-07 15:32:52"
"2013-04-07 15:34:21"
"2013-04-07 15:39:09"
"2013-04-07 16:24:25"
"2013-04-07 16:29:58"
"2013-04-07 16:33:22"
"2013-04-07 16:34:30"
"2013-04-07 16:35:09"
"2013-04-07 16:36:54"
"2013-04-07 16:38:40"
"2013-04-07 16:39:37"
"2013-04-07 16:39:37"
"2013-04-07 16:39:38"
"2013-04-07 16:39:38"
"2013-04-07 16:39:44"
"2013-04-07 16:39:56"
"2013-04-07 16:40:03"
"2013-04-07 16:40:04"
"2013-04-07 16:41:22"
"2013-04-07 16:41:27"
"2013-04-07 16:41:38"
"2013-04-07 16:41:38"
"2013-04-07 16:42:24"
"2013-04-07 16:42:39"
"2013-04-07 16:45:00"
"2013-04-07 16:45:40"
"2013-04-07 16:49:43"
Ich habe alle Zeitstempel zwischen einem Zeitraum, aber ich muss sie alle 10 Minuten gruppieren und ich habe keine Ahnung, wie. Ich habe versucht, date_trunc
was nicht die Präzision hat, die ich brauche.
Beispiel: zwischen 2013-04-07 15:30:00, 2013-04-07 15:40:00 5 results
.
Wie kann ich das machen?
Ich habe es versucht und es hat nicht wie erwartet funktioniert.
SELECT
timestamp 'epoch' +
INTERVAL '1 second' * round((extract('epoch' from earthnetworks_dt_horario) / 600) * 600) as horario,
count(earthnetworks_dt_horario)
FROM raios.earthnetworks, raios.earthnetworks_teste_poligono
WHERE ST_Within(earthnetworks_geometry_raios, poligono_geometry)
AND earthnetworks_dt_horario
BETWEEN '2013-04-07 15:30:00' AND '2013-04-07 16:50:00'
AND earthnetworks_num_tipo = 0
AND id_poligono = 2
GROUP BY
round(extract('epoch' from earthnetworks_dt_horario) / 600), earthnetworks_dt_horario
Dies ist die nicht gruppierte Ergebnismenge:
"2013-04-07 16:29:58";1 "2013-04-07 16:34:30";1 "2013-04-07 16:33:22";1 "2013-04-07 16:39:44";1 "2013-04-07 16:39:56";1 "2013-04-07 16:42:24";1 "2013-04-07 16:41:38";2 "2013-04-07 16:24:25";1 "2013-04-07 16:39:38";2 "2013-04-07 16:42:39";1 "2013-04-07 16:41:27";1 "2013-04-07 16:36:54";1 "2013-04-07 16:45:00";1 "2013-04-07 16:40:04";1 "2013-04-07 16:40:03";1 "2013-04-07 15:34:21";1 "2013-04-07 15:30:55";1 "2013-04-07 15:39:09";1 "2013-04-07 16:49:43";1 "2013-04-07 16:45:40";1 "2013-04-07 16:35:09";1 "2013-04-07 16:38:40";1 "2013-04-07 16:39:37";2 "2013-04-07 16:41:22";1 "2013-04-07 15:32:52";2
Es hat nicht funktioniert.
quelle
|| ' minutes'
in verwendet wurdedate_part
.integer || 'minutes'
wird verwendet, um einen Intervalltyp zu erstellen, z. B. "8 Minuten", der dem Zeitstempel hinzugefügt wird.Ich habe in mySql etwas Ähnliches getan, indem ich nach Zeitstempel gruppiert habe -
MOD(timestamp, 600)
dessen Rückgabewert für alle Zeitstempel innerhalb eines Intervalls von 10 Minuten (600 Sekunden) gleich ist.quelle