php - MySQL 在给定时间段内找到前 x%

标签 php mysql sql percentile

我担心这会很快变得相当复杂,但我想知道显示按“受欢迎程度”排序的最新“事件”的最佳方法是什么 - 这是“喜欢”或“观点”的衡量标准(甚至可能两者都有,如果可能的话 - 将喜欢计算为 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/

相关文章:

php - 简单的登录脚本

MYSQL 5.5 删除主键

sql - 共同的 friend -SQL算法

php - 如何在MYSQL数据库中创建事件?

mysql - 无法减少mysql 5.7 VIRT Ram Use Too High Mysql

PHP 网站搜索脚本

php - 如何保存修改以便以后应用?

php - 如何使用 RegEx 确定分隔符之间的最大块?

php - 加载Product_TYPE ='cars',同时检查last_id是否比ID大

php - mysql 数据库的下拉菜单