Mat*_*att 5 mysql sql sql-order-by weighting
我正在尝试按两列排序表,每列都有不同的权重.第一个是uptime0到1之间的值,权重为0.3.第二votes个是非负整数,权重为0.7.
加权需要乘以0-1之间的值,因此我将通过将每行的投票数除以任何行所持的最大投票数来获得投票.
到目前为止,这是我的查询,它几乎可以工作:
SELECT addr
FROM servers
ORDER BY (0.3 * uptime) +
(0.7 * (votes / 100)) DESC
Run Code Online (Sandbox Code Playgroud)
100是硬编码的,应该是最大值votes.使用MAX(votes)使查询仅返回具有最高投票数的记录.这可以在一个查询中完成吗?
您可以使用子查询来选择最大值votes
SELECT addr
FROM servers
ORDER BY (0.3 * uptime) +
(0.7 * (votes / (SELECT MAX(votes) FROM servers))) DESC
Run Code Online (Sandbox Code Playgroud)
示例小提琴在这里。
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |