mysql - 按顺序使用最大列值

标签 mysql sql sql-order-by weighting

我正在尝试按两列对表格进行排序,每列具有不同的权重。第一个是 uptime,它是一个介于 0 和 1 之间的值,权重为 0.3。第二个是 votes,它是一个非负整数,权重为 0.7。

权重需要乘以 0-1 之间的一个值,因此我将通过将每一行的投票数除以任何行持有的最大投票数来得到这个权重。

到目前为止,这是我的查询,它几乎可以工作:

SELECT addr
  FROM servers
  ORDER BY (0.3 * uptime) +
           (0.7 * (votes / 100)) DESC

100 是硬编码的,应该是 votes 的最大值。使用 MAX(votes) 使查询仅返回投票数最高的记录。这可以在单个查询中完成吗?

最佳答案

您可以使用子查询来选择 votes 的最大值

SELECT addr
  FROM servers
  ORDER BY (0.3 * uptime) +
           (0.7 * (votes / (SELECT MAX(votes) FROM servers))) DESC

fiddle 示例 here .

关于mysql - 按顺序使用最大列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11330556/

相关文章:

php - 插入函数时出现mysql版本错误

sql - 根据组合键比较表的记录

MySQL 查询有特定的约束吗?

php - 尝试定位sql注入(inject)源

mysql - 如何使用 MySQL View 和 ORDER BY 子句?

mysql - 复制mysql数据而不进行mysql同步

mysql - sphinx 搜索查询前 20 个按标题 WEIGHT 排序,后 20 个按标题 ASC 排序,无重复输出

mysql - 是否可以将相同的 UPDATE 逻辑应用于 MySQL 中单个语句中的多个列?

sql - 如何编写 SQL 查询以根据条件对结果进行排序?

返回的 MySQL 查询结果是半随机/不一致排序的