[英]Find difference in last weeks data
我试图找出一个人的观点在一周内增加了多少。
我正在处理的列看起来像这样。
检索和显示此数据的代码
<?php
$query = "SELECT post_title, post_date, post_views_count FROM posts
WHERE post_user = '{$username}' AND post_status = 'published' ORDER
BY post_views_count DESC LIMIT 8";
$select_views = mysqli_query($connection, $query);
while ($row = mysqli_fetch_assoc($select_views)) {
$post_title = escape($row['post_title']);
$post_date = escape($row['post_date']);
$post_views_count = escape($row['post_views_count']);
echo $post_title . ' / ' . $post_views_count . ' / ' . $post_date .
'<br><br>';
}
?>
返回看起来像这样的数据
现在我如何才能找到过去 7 天内 post_views_count 增加的差异?
理想情况下,我试图回应诸如“您的帖子本周还有 55 次观看”之类的内容
任何方向都非常感谢。
假设本周您计算出所有帖子的浏览量为 0,然后将该数量存储在特定帖子的单独列中。 然后继续只更新一天或一周的post_views
列,如果您想定期显示 1 周的差异。
然后,您可以计算视图并从post_views
减去最后存储的视图以获得差异。
计算后的差值,更新与该last_views列posts_views
。
希望能帮助到你。
我不确定您是想按帖子还是所有帖子执行此操作。
这种方法适用于所有帖子。
您可以找到当前周的限制(在本例中从周一到周日):
$startOfTheWeek = date("Y-m-d", strtotime('monday this week'));
$endOfTheWeek = date("Y-m-d", strtotime('sunday this week'));
然后运行类似于以下查询的内容,您将获得当前周之前和本周期间的视图:
SELECT SUM(viewsThisWeek) AS viewsThisWeek, SUM(viewsBeforeThisWeek) AS viewsBeforeThisWeek FROM
(SELECT SUM(post_views_count) AS viewsThisWeek, 0 AS viewsBeforeThisWeek FROM posts AS tbl1
WHERE post_user = '{$username}' AND (post_date BETWEEN '{$startOfTheWeek}' AND '{$endOfTheWeek}')
UNION ALL
SELECT '0' AS viewsThisWeek, SUM(post_views_count) AS viewsBeforeThisWeek FROM posts AS tbl2
WHERE post_user = '{$username}' AND post_date < '{$startOfTheWeek}') AS tbl3
在此之后,您可以轻松计算视图中的差异。
如果您希望每个帖子都有差异,那么只需根据此分隔查询即可。
您可以创建一个存储过程来存储过去几天的数据,一旦数据较旧,则 7 天后它会删除该数据。
这将使您可以比较数据,一旦数据不再使用,它就会自动删除它。
这将防止您的数据库填满。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.