【发布时间】:2016-09-30 19:33:18
【问题描述】:
我正在尝试创建一个显示前 10 篇文章的“趋势”列表。趋势列表基于最新和大多数视图。这是我当前的 SQL 查询的样子:
$resultSet = $db->query("SELECT * FROM Articles ORDER BY Counter DESC, dateStamp LIMIT 10");
Counter 是存储每篇文章有多少浏览量的列。 dateStamp 是存储每篇文章的日期时间的日期时间列。我当前的 SQL 适用于视图数量。它将查看次数最多的文章排在顶部,将查看次数最少的文章排在底部。
我在使用当前 SQL 时遇到的唯一问题是它不仅仅采用最近的日期。它查找所有日期并仅根据视图对查询进行排序。一篇文章可能长达 2 年,但它会有更多的浏览量,所以它会出现在趋势列表中。
我怎样才能使查询根据最近和大多数视图对结果进行排序?
示例数据:
日期:2015 年 8 月 1 日观看次数:20,000
日期:2016 年 9 月 30 日观看次数:500
日期:2016 年 9 月 28 日观看次数:400
日期:2016 年 9 月 25 日观看次数:150
日期:2016 年 9 月 22 日观看次数:100
日期:2016 年 9 月 21 日观看次数:98
日期:2016 年 9 月 20 日观看次数:92
日期:2016 年 9 月 18 日观看次数:10
日期:2016 年 9 月 15 日浏览次数:5
日期:2016 年 9 月 12 日观看次数:3
从技术上讲,数据应如下所示:
日期:2016 年 9 月 30 日观看次数:500
日期:2016 年 9 月 28 日观看次数:400
日期:2016 年 9 月 25 日观看次数:150
日期:2016 年 9 月 22 日观看次数:100
日期:2016 年 9 月 21 日观看次数:98
日期:2016 年 9 月 20 日观看次数:92
日期:2016 年 9 月 18 日观看次数:10
日期:2016 年 9 月 15 日浏览次数:5
日期:2016 年 9 月 12 日观看次数:3
日期:2016 年 9 月 11 日观看次数:2
它没有组织最近的日期。我需要它来组织最近的日期和最多的视图。视图部分工作正常,只是日期不正常。
【问题讨论】:
-
提供样本数据和期望的结果。如果您要求我们以“合理”的方式对结果进行排序,那么您的问题应该以基于意见的方式结束。
-
您的选择是:大多数视图受合理时间段的限制,最近的视图受合理次数的限制,具有合理的视图权重和时间段的最大权重函数。
-
@GordonLinoff 我已经更新了问题,请检查
-
但是前 10 名最近的日期不一定与前 10 名观看次数最多的日期一致。两者完全没有关系。你还没有很好地考虑到你想要什么。
-
@MikeNakis 我想要根据他们拥有的观看次数排序最近的日期。