все. У меня есть таблица с столбцом даты, которая является либо нулевой, либо содержит дату события. Я пытаюсь подсчитать, сколько из этих дат попадает в заданный диапазон (например, сначала от месяца к последнему дню месяца), а затем группируется по этому диапазону (т.е. Группа за месяцем)
Если бы я сделал это в течение одного месяца, это выглядело бы так:
SELECT count(*)
FROM my_table
WHERE my_table.event_date > 1530403200 and my_table.event_date < 1530403200
/* 7/1/2018 to 7/31/2018 */
Так что мне очень нравится - это запрос, чтобы дать мне результаты, сгруппированные по месяцам, с подсчетом этих полных строк в течение каждого месяца, например:
:
6/1/2018 - 6/30/2018, 8650
7/1/2018 - 7/31/2018, 9180
:
etc.
Спасибо за любой совет.
Вы можете использовать что-то вроде следующего:
SELECT
MONTH(FROM_UNIXTIME(event_date)) AS month,
MIN(FROM_UNIXTIME(event_date)) AS first_date,
MAX(FROM_UNIXTIME(event_date)) AS last_date,
COUNT(*) AS cnt_dates
FROM my_table
WHERE FROM_UNIXTIME(my_table.event_date) > '2018-08-01'
AND FROM_UNIXTIME(my_table.event_date) < '2018-08-15'
AND NOT my_table.event_date IS NULL
GROUP BY MONTH(FROM_UNIXTIME(event_date))