我担心这会很快变得相当复杂,但我想知道显示按“受欢迎程度”排序的最新“事件”的最佳方法是什么 - 这是“喜欢”或“观点”的衡量标准(甚至可能两者都有,如果可能的话 - 将喜欢计算为 2x View ?)。
因此,如果我有一个数据库,其中包含有查看和/或喜欢的帖子,我希望能够显示过去 24 小时内最受欢迎的前 5% 帖子。
我有 3 个表,一个用于帖子,两个用于喜欢和查看(1 行 = 1 个喜欢/查看)
表 1 = “帖子”
id | title | timestamp | etc.
表 2 = "posts_likes"
post_id | user_id
表 3 =“posts_views”
post_id | user_id
使用 MySQL + PHP,运行此查询以按其整体计算的受欢迎程度对我的帖子进行排序的最佳方式是什么?
非常感谢,蒂姆
最佳答案
我会给你一些伪 sql 来展示我会使用的想法,你可以添加缺失的位并让它工作。
它假设前 5% 是基于帖子的数量,但如果它是基于喜欢加浏览量的分数,那么调整应该是微不足道的。
SET @foo=0.05 * select count(*) from posts where (timestamp < today - 24 hours);
PREPARE STMT FROM 'SELECT posts,sum(likes) * 2 + sum(views) as POPULAR FROM (tables joined) ORDER BY popular LIMIT ?';
EXECUTE STMT USING @foo;
问候,
关于php - MySQL 在给定时间段内找到前 x%,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14708537/