作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的表基本上是一个访问日志,记录每个页面点击。我想要显示的是一年中每个星期的每周页面点击量,比较年份(所以我有 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/
我不太擅长处理日期时间。我用了momentjs用于操纵时间的 ionic 应用,但我想实现一些我无法做到的事情。 我为此使用了一个管道,我想根据已经过去了多少天或者几周、几个月或几年来显示。使用相对时
我是一名优秀的程序员,十分优秀!