【问题标题】:Return results per week using start date PHP使用开始日期 PHP 每周返回结果
【发布时间】:2018-07-31 15:08:25
【问题描述】:

我正在尝试通过 PHP 获取 SQL 数据,并每周显示一个案例类型,如下所示:

Week 1 | Date From | Volume
Week 2 | Date From | Volume
Week 3 | Date From | Volume

等等...无需每周手动操作。我将周数变量设置为业务年从七月开始,所以Week 1 是七月的第一周。理想情况下,我想使用公司的几周,但会适应正常的年初。我从这个开始:

    SELECT YEARWEEK(date) as weekNum, MIN(sr_mob.`date`) as start_date, 
    count(*) as numRecords 
    FROM sr_mob
    WHERE outcome='Escalated'
    GROUP BY YEARWEEK(date)

这为我提供了返回数据,但 start_date 会根据该周第一次进入的时间而有所不同。

有没有办法在 PHP 中定义一周,然后查询表(不包含周数)以获取我想要的内容?或者这听起来像我每周都必须手动请求......

我可以通过say:
$Week1 ($week1=20180731-7;)运行单个查询

我想我正在寻找的是一种使用$week 变量进行for eachwhile 的方法,而无需写出52 个变量,如果这有意义的话。

【问题讨论】:

标签: php mysql week-number


【解决方案1】:

使用来自:https://stackoverflow.com/a/30373395/2397717的参考

SELECT 
    YEARWEEK(date) as weekNum, 
    STR_TO_DATE(CONCAT(YEARWEEK(date),' Monday'), '%X%V %W') as start_date, 
    count(*) as numRecords 
FROM sr_mob 
WHERE outcome='Escalated' 
GROUP BY YEARWEEK(date)

【讨论】:

  • @Jochem Kuijpers 无论如何都可以将年份开始指定为另一个日期。在此查询中,年份从 1 月 1 日开始,是否可以更改为从 7 月 1 日开始?那么 weekNum1 将是 7 月的第一周(目前显示为第 26 周)?如果没有,那很好,我可以解决这个问题,感谢您的帮助,非常感谢。
  • 我一直认为如果不能在 GROUP BY 中包含来自 select 的非聚合列是自找麻烦 - 即使存在看似明确的功能依赖关系
  • @gdr39 我只是格式化了答案。我还没有检查它的正确性。正如@Strawberry 指出的那样;此查询具有未定义的行为,因为它在不使用聚合函数的情况下进行分组。 MySQL 文档指定将使用任意值来表示组(例如,使用 MIN(date) 来使用最小值)。如果您想要一个完全正确的答案,您将不得不向我们提供更多详细信息。您的数据库架构是什么样的,等等。请参阅 Strawberry 对您的问题的初步评论。
猜你喜欢
  • 2021-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-05
  • 2010-11-19
  • 2023-03-30
  • 1970-01-01
相关资源
最近更新 更多