查找上周数据的差异

时间:2017-09-28 05:16:11

标签: php mysql sql mysqli

我试图找出一个人的观点在一周内增加了多少。

我正在使用的列看起来像这样。

enter image description here

检索和显示此数据的代码

<?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>';
  }
?>

返回看起来像这样的数据

enter image description here

现在我怎样才能找到post_views_count在过去7天内增加的差异?

我理想地试图回应“你的帖子本周有55个以上的观点”这样的内容

非常感谢任何方向。

3 个答案:

答案 0 :(得分:1)

假设本周您计算出,所有帖子都有0个观看次数,然后将该金额存储在特定帖子的单独列中。如果您要定期显示1周差异,请继续仅更新post_views列一天或一周。

然后,您可以计算视图并从post_views中减去最后存储的视图以获得差异。

计算差异后,使用posts_views更新last_views列。

希望它有所帮助。

答案 1 :(得分:0)

我不确定你是想按照帖子或所有帖子来做这件事。

此方法适用于所有帖子。

您可以找到当前周的限制(在此示例中为周一至周日):

$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

在此之后,您可以轻松计算视图中的差异。

如果您希望每个帖子有差异,那么只需根据该分隔界定查询。

答案 2 :(得分:0)

您可以制作一个存储过程来存储过去几天的数据,一旦数据较旧,那么7天就会删除该数据。

这将使您可以比较数据,一旦数据不再使用,它​​会自动删除它。

这会阻止您的数据库填满。