Můžete použít TIMESTAMPDIFF
seskupit podle časových intervalů:
Pro zadaný interval hodin můžete použít:
SELECT '2012-08-03 00:00:00' +
INTERVAL FLOOR(TIMESTAMPDIFF(HOUR, '2012-08-03 00:00:00', timestamp) / <n>) * <n> HOUR AS start_time,
COUNT(*) AS total
FROM event
WHERE timestamp >= '2012-08-03 00:00:00'
GROUP BY start_time
Nahradit výskyty 2012-08-03 00:00:00
s vaším minimálním datem zadání.
<n>
je váš zadaný interval v hodinách (každé 2
hodiny, 3
hodiny atd.) a totéž můžete dělat po dobu minut:
SELECT '2012-08-03 00:00:00' +
INTERVAL FLOOR(TIMESTAMPDIFF(MINUTE, '2012-08-03 00:00:00', timestamp) / <n>) * <n> MINUTE AS start_time,
COUNT(*) AS total
FROM event
WHERE timestamp >= '2012-08-03 00:00:00'
GROUP BY start_time
Kde <n>
je váš zadaný interval v minutách (každých 45
minut, 90
minut atd.).
Ujistěte se, že zadáváte minimální vstupní datum (v tomto příkladu 2012-08-03 00:00:00
) jako druhý parametr k TIMESTAMPDIFF
.
UPRAVIT: Pokud se nechcete starat o to, jakou intervalovou jednotku vybrat v TIMESTAMPDIFF
funkci, pak samozřejmě stačí provést interval po sekundách (300 =5 minut, 3600 =1 hodina, 7200 =2 hodiny atd.)
SELECT '2012-08-03 00:00:00' +
INTERVAL FLOOR(TIMESTAMPDIFF(SECOND, '2012-08-03 00:00:00', timestamp) / <n>) * <n> SECOND AS start_time,
COUNT(*) AS total
FROM event
WHERE timestamp >= '2012-08-03 00:00:00'
GROUP BY start_time
EDITACE 2: Chcete-li reagovat na vaši poznámku týkající se snížení počtu oblastí v prohlášení, kde musíte zadat minimální datum parametru, můžete použít:
SELECT b.mindate +
INTERVAL FLOOR(TIMESTAMPDIFF(SECOND, b.mindate, timestamp) / <n>) * <n> SECOND AS start_time,
COUNT(*) AS total
FROM event
JOIN (SELECT '2012-08-03 00:00:00' AS mindate) b ON timestamp >= b.mindate
GROUP BY start_time
A jednoduše zadejte svůj minimální parametr datetime jednou do dílčího výběru spojení.
Můžete dokonce vytvořit druhý sloupec v dílčím výběru spojení pro váš sekundový interval (např. 3600
) a sloupec pojmenujte jako secinterval
... pak změňte <n>
's na b.secinterval
, takže svůj minimální parametr data AND interval musíte zadat pouze jednou.