这是我的当前表格。
ID Start_Date End_Date
6446 2018-01-01 00:00:00 2018-04-01 00:00:00
6848 2018-05-01 00:00:00 2018-05-31 00:00:00
3269 2016-11-09 00:00:00 2016-11-21 00:00:00
7900 2018-11-07 00:00:00 2018-11-30 00:00:00
4006 2017-04-06 00:00:00 2017-04-30 00:00:00
有没有办法获取每周的活动事件数?有些事件可能会持续几周。事件 ID 是不同的,可用于计数。
如果需要,请提供帮助并乐于提供更多信息。
编辑1:我想要的数据集是
2019 年第 1 周 - 60 个活跃事件 2019 年第 2 周 - 109 个活跃事件
我知道 WEEK(日期时间(,但这并不能捕获随后几周处于活动状态的事件。
问题是我没有捕获活动事件开始一周后的数量。
编辑 2:周将被定义为在日期对象上使用 mysql 中的 week(( 函数返回的整数。我的数据仅适用于 2019 年。
尝试在 MySQL 中使用 count(( 函数。
SELECT COUNT(*) FROM your_table WHERE Start > 'start-date' AND End < 'end-date'
尝试以下查询
SELECT
IFNULL(DATE_FORMAT(Start_Date, '%Y WEEK %U'), 0) AS STARTDate,
IFNULL(DATE_FORMAT(End_Date, '%Y WEEK %U'), 0) AS ENDDate,
IFNULL(COUNT(ID),0) AS total,
group_concat(ID)
FROM `event`
where Start_Date < End_Date
Group by STARTDate;
我找到了答案,但遇到了一个新问题。
基于Kranti的代码,答案如下。
SELECT
EXTRACT(WEEK FROM starting_date) AS STARTDate,
EXTRACT(WEEK FROM ending_date) AS ENDDate,
discount_type,
COUNT(ID) AS total
FROM `event`
where starting_date < ending_date
Group by 1,2
这给了我从第1-3周,第1-4周等发生的事件的数量,依此类推。
之后,我们对感兴趣的周进行左连接,条件是周数介于 STARTDate 和 ENDDate 之间。由于左连接的工作方式,它将为满足特定条件的所有行复制行。
我们跟进分组依据和总和,这将为我们提供每周的活动事件数。