Mysql 本月的信誉求和,并在我的结果之前选择其他 2 个较低的结果和其他 2 个较高的结果

标签 mysql

我正在尝试计算本月用户的声誉,然后找到 4 个最接近的其他结果(2 个较低,2 个较高),以便按顺序找到 5 个结果。 例如,某个用户的声誉是 4500,所以我应该得到最终结果:2750, 3000, 4500, 4650, 8900

这是我正在执行的查询(它仅选择特定用户在当月的声誉):SELECT SUM(reputation_change) FROM Activity WHERE user_id = '1' AND YEAR(datetime) = YEAR( CURDATE()) AND MONTH(日期时间) = MONTH(CURDATE())

我的表格如下: enter image description here

所以问题是:如何使其性能公平?难道我不需要重构表并只为每个用户列添加reputation_this_month吗?

感谢您的所有建议。

最佳答案

您可以每晚运行一个 MySQL 例程,根据上面的查询创建一个不同的表。当您从此表中进行 SELECT 操作时,您将看到更快的结果,并且不会因为资源密集型查询而对生产表造成负担

关于Mysql 本月的信誉求和,并在我的结果之前选择其他 2 个较低的结果和其他 2 个较高的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19208305/

相关文章:

mysql - 比较 MySQL 中两个表中的两行,仅显示负结果

php - 不使用ID返回随机行,MySQL

mysql - 如何为 MySQL 中的用户授予 CREATE USER 和 GRANT 权限?

android - 从图像到我的Android手机到blob mysql远程数据库

mysql - 如何在 Sequel Pro 中创建查找字段?

php - PHP/MySQLi 查询的 Ajax 调用返回错误结果

php - 使用 Toggle 按钮设置 href,使用 mysql 和 php

mysql - 使用带有 GROUP BY 和 INNER JOIN 的 MIN() 函数删除重复行

mysql - 如何解决不正确的字符串值错误 (MySQL)

mysql - 重写查询以避免在子查询中使用 WHERE IN