在PHP中每周计算事件数量

9
我有一个表格,其中包含成员注册信息。我希望能够对数据进行一些图表和分析,并查看注册趋势等。因此,我想能够绘制一条线状图表,显示过去52周每周有多少人注册。我的图表已经正常工作了,因为我已广泛使用它们,但我无法理解如何使用PHP从MySQL中提取数据,这让我感到困扰,因为我知道这不应该很难-表格具有名为datestamp的字段,其格式为Y-m-d。最好如何创建一个循环,以打印出每周注册日期和注册统计次数,涵盖前52周?
1个回答

13

假设您的时间戳列名为signup_date,您可以执行以下查询:

SELECT
    WEEKOFYEAR(signup_date) AS weekno, 
    COUNT(1) AS signups 
FROM your_table 
GROUP BY WEEKOFYEAR(signup_date);

这将为您提供一个结果集,包含2列数据:一列是每年的第几周,另一列是该周有多少个注册。

编辑1:

要获取每个结果的当周日期,可以在查询中添加以下内容:

SELECT
    WEEKOFYEAR(signup_date) AS weekno, 
    COUNT(1) AS signups,
    SUBDATE(signup_date, INTERVAL WEEKDAY(signup_date) DAY) AS date_of_week
FROM your_table 
GROUP BY WEEKOFYEAR(signup_date);

这个方法很好,但有一个小问题 - 我想能够查看今天之前的52周,而不是查看一年中的52周。使用这种方法,本周显示为第16周(正确),但是在绘图时,我希望将本周显示为第1周(或第52周),然后上周显示为第2周(或第51周),以此类推,随着时间的推移每周都会变化。此外,是否可以显示每周的实际日期,例如01/01/2012 4、08/01/2012 14等? - bhttoan
请看Edit 1以获取您评论的最后一部分。 - Will Warren

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接