我们假设我的列包含介于1-100之间的浮点值。
我希望能够将该值转换为1-10之间的精确整数,然后在此新值上对结果进行排序。
想要使排序不那么精确似乎很奇怪,但是SQL语句按2列排序,如果第一列太精确,那么第二顺序列就没有权重。
基本上我想将我的第一个订单分组为10个组,然后按照另一个列对每个组进行排序。
SELECT "sites".* FROM "sites" ORDER BY "sites"."rating" DESC, "sites"."price" ASC LIMIT 24 OFFSET 0
编辑:这是一个使用postgresql的rails应用程序
答案 0 :(得分:1)
那是什么SQL?使用除法函数,如有必要,将其四舍五入。
在MySQL中查看DIV命令。我现在没有办法对此进行测试,但它可能会帮助您指明正确的方向:
SELECT“sites”。* FROM“sites”ORDER BY“sites”。“rating”DIV 2 DESC,...
答案 1 :(得分:1)
SELECT "sites".*
FROM "sites"
ORDER BY FLOOR("sites"."rating"/10) DESC, "sites"."price" ASC
LIMIT 24 OFFSET 0
答案 2 :(得分:1)
使用圆形功能如下:
Select sites.*
from sites
order by round(sites.rating/10, -1) desc, sites.price desc
这会将值99转换为10.