如何获取给定开始和结束日期(MYSQL)一周内发生的活动事件数?

如何获取给定开始和结束日期(MYSQL)一周内发生的活动事件数?,mysql,Mysql,这是我目前的表格 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

这是我目前的表格

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(datetime),但是这并不能捕获接下来几周的活动

问题是,我没有捕获活动开始一周后的活动数量

edit2:Week将被定义为使用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;
选择
如果NULL(日期格式(开始日期,%Y周%U'),0)为起始日期,
如果NULL(日期格式(结束日期,%Y周%U'),0)作为结束日期,
如果NULL(计数(ID),0)为总计,
小组讨论(ID)
来自“事件”
其中开始日期<结束日期
按起始日期分组;

我找到了答案,但遇到了一个新问题

根据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
选择
提取(从开始日期算起的一周)作为起始日期,
提取(从结束日期算起的一周)作为结束日期,
折扣类型,
总数(ID)
来自“事件”
其中开始日期<结束日期
按1,2分组
这给我的是从第1-3周,第1-4周等等发生的事件的数量

然后,在周数介于STARTDate和ENDDate之间的条件下,对感兴趣的周进行左连接。由于左联接的工作方式,它将为满足特定条件的所有行复制行


我们用groupby和sum进行跟踪,这将为我们提供每周活动的事件数

可以使用week()函数返回年份中的周数。然后在一年中测试一点点,你就可以用它了。你能分享预期的结果吗?你如何定义“第一周”?包含1月1日的一周?前四天?星期天开始吗?星期一?@SalmanA嘿,我刚意识到我没有回复你。“第1周”指的是它的实际日期,使用mysql提取函数提取。是的,这给了我一周内活动事件的计数。2019年是否可能每周都这样做?我建议您使用PHP、Java等编程语言。在那里你可以设置一个自动增加的计数器,你可以根据你的期望格式化输出。不过我想把它投入生产。我希望我的用户能够在excel中刷新报告。如果我使用脚本语言,是否意味着我的用户至少需要能够运行脚本?如果他们想要最新的状态,当然他们需要。如果您只是从控制台运行脚本,或者需要执行其他操作来获取最新状态。这应该是自动发生的,也许你在搜索类似计划任务的内容,所以每天或每周下午2:30,你的旧文件将被新文件替换。嘿,Max,谢谢你的反馈和回答。我知道你是从哪里来的,但是这份报告是为了完成noobs(lol),所以让他们运行脚本或其他东西是有点困难的。我可以考虑的第二件事是使用Python(或某物)运行一个脚本来运行查询,把它放到Excel中并上传到谷歌驱动器中。那可能行得通。哈哈,谢谢你,麦克斯!嘿,那看起来挺有用的。明天我会试试。新的问题是当我的活动持续一年的时候。这打乱了我的摘录(星期…)功能。仍在调查中。