全部。我有一个表,其中的日期列为null或包含事件的日期。我正在尝试计算这些日期中有多少属于给定范围(例如,每月的第一天到该月的最后一天),然后按该范围分组(即,按月分组)
如果我要做一个月,它将看起来像这样:
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.
谢谢您的建议。
答案 0 :(得分:2)
您可以使用以下内容:
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))