我正在尝试按两列对表格进行排序,每列具有不同的权重。第一个是 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/