Довольно легко сгруппировать по отличительным параметрам времени, таким как часы, минуты, день или что-то еще. Если вы хотите сгруппировать это по часам, возможный запрос может выглядеть так:
SELECT DATE_FORMAT(post_date_added,"%Y-%m-%d %H") AS "_Date",
COUNT(*)
FROM posts
WHERE post_handler = 'test'
AND post_status = 1
GROUP BY _Date;
(запустите его с помощью инструмента запросов mysql по вашему выбору, чтобы увидеть вывод).
Однако, если вы хотите считать 30 минут основой своей группы, SQL-часть станет более сложной. Для этой особой цели, так как вам нужно только разделить на два разных подмножества, возможно, поработайте с этим подходом:
SELECT DATE_FORMAT(post_date_added,"%Y-%m-%d %H") AS "_Date",
"00" AS "semihour",
COUNT(*)
FROM posts
WHERE post_handler = 'test'
AND DATE_FORMAT(post_date_added,"%i") < 30
AND post_status = 1
GROUP BY _Date
UNION
SELECT DATE_FORMAT(post_date_added,"%Y-%m-%d %H") AS "_Date",
"30" AS "semihour",
COUNT(*)
FROM posts
WHERE post_handler = 'test'
AND DATE_FORMAT(post_date_added,"%i") >= 30
AND post_status = 1
GROUP BY _Date;
Опять же, запустите это с помощью инструмента запросов mysql по вашему выбору, чтобы увидеть результат. Вы также можете добавить здесь математические различия, работая с CASE
или IF
и тому подобным, но лично я бы сгруппировал по часам или минутам, просто чтобы SQL часть была легче.
Чтобы напрямую добавить эти числа в базу данных графа, используйте следующий синтаксис:
INSERT INTO yourtable (yourfields)
SELECT ...
Более подробную информацию об этом можно найти здесь в документации MySQL.