gpt4 book ai didi

php - 计算按一年中的几周分组的记录

转载 作者:行者123 更新时间:2023-11-29 06:23:29 24 4
gpt4 key购买 nike

我的表基本上是一个访问日志,记录每个页面点击。我想要显示的是一年中每个星期的每周页面点击量,比较年份(所以我有 2013 年、2014 年、2015 年的第 1 周、2013 年的第 2 周、2014 年等等)。我目前通过查询所有记录并让 PHP 完成繁重的工作来完成此任务,如下所示:

$result=$db->query("select `time` from accessTracking where `uID` is not null and `time`>1357030861 order by `time`");
foreach($result as $r){
$y=date("Y",$r['time']);
$w=ltrim(date("W",$r['time']),'0');
$accessArray[$w][$y]++;
}

虽然它有效,但加载显示图表的页面需要整整 7 秒,而且我认为不仅 PHP 有更好的方法,而且 MySQL 更是如此(这就是我正在寻找的因为,但我会采取任何可以减少页面加载时间并使整个事情更有效率的方法。

因此,我想出的最好办法是:

select weekofyear(`time`) as week, count(*) as count from `accessTracking` where `uID` is not null group by week

这看起来会起作用,因为它返回 53 行,其中“周”列为 1-52,“计数”列中的随机值范围为 2 到 1100。问题是数字应该是最高的一周是大约 27,000 次点击,并且此查询中返回的第一条记录是空“周”值,“计数”值约为 398,000。这告诉我,对于大多数记录,它不会计算 weekofyear() 值。

我的猜测是,我最终会把它作为每年的单独查询来运行,因为让它返回年份、周数和计数可能太多了,所有这些都按我想要的方式分组。但谁知道呢!

最佳答案

您的查询没有可比性。特别是,第一个有这个条件:

`time` > 1357030861

这表明 time 是一个 unix 时间。我建议您尝试:

select weekofyear(from_unixtime(`time`)) as week, count(*) as count
from `accessTracking`
where `uID` is not null and `time` > 1357030861
group by week;

关于php - 计算按一年中的几周分组的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32281789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com