MySQL Data into Arbitrarily Sized Time Buckets группы

Как я считаю количество записей в таблице MySQL на основе столбца метки времени на единицу времени, где единица времени произвольна?

А именно, я хочу рассчитать, сколько меток времени записи попало в 15-минутные блоки во время данного интервала. Я понимаю, как сделать это в блоках 1 секунды, 1 минуты, 1 часа, 1 дня и т.д. с помощью функций даты MySQL, например.

SELECT YEAR(datefield) Y, MONTH(datefield) M, DAY(datefield) D, COUNT(*) Cnt FROM mytable GROUP BY YEAR(datefield), MONTH(datefield), DAY(datefield)

но как я могу сгруппироваться 15-минутными блоками?

21
задан Eric J. 5 April 2010 в 17:19
поделиться

3 ответа

GROUP BY
    YEAR(datefield),
    MONTH(datefield),
    DAY(datefield),
    HOUR(datefield),
    FLOOR(MINUTE(datefield)/15)

В качестве альтернативы вы можете сказать просто:

SELECT FLOOR(UNIX_TIMESTAMP(datefield)/900) AS t, COUNT(*) AS cnt
FROM mytable
GROUP BY t

с приложением, ответственным за форматирование метки времени для каждого 15-минутного периода, обратно в удобочитаемую форму г / м / д. / ч / м. (Если вам нужно было указать местное время в безумном часовом поясе, не выровненном по четверти часа, вам понадобится смещение взлома.)

25
ответ дан 29 November 2019 в 21:12
поделиться

Как насчет получения ЦЕЛОГО ЧАСА (DateField) * 60 + МИНУТ (DateField)) / YourInterval.

Таким образом, независимо от вашего интервала, включив час * 60 минут, вы сохраните его последовательно в течение заданного дня, и вы будете иметь дело не только с 15 минутами, сгруппированными в час, а каждые 15 минут своего СВОЕГО часа. ... Добавьте этот столбец в свою группу по предложению, которое вы можете сделать по его порядковому номеру.

4
ответ дан 29 November 2019 в 21:12
поделиться

Чтобы заставить вас задуматься, вот альтернатива решению FLOOR (MINUTE (datefield) / 15) :

GROUP BY CASE
WHEN MINUTES(datetime) BETWEEN 0 AND 14 THEN 0
WHEN MINUTES(datetime) BETWEEN 15 AND 29 THEN 1
WHEN MINUTES(datetime) BETWEEN 30 AND 44 THEN 2
WHEN MINUTES(datetime) BETWEEN 45 AND 59 THEN 3
END
4
ответ дан 29 November 2019 в 21:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: