SQL order_by表达式

时间:2015-11-18 22:46:59

标签: sql ruby-on-rails postgresql

我们假设我的列包含介于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应用程序

3 个答案:

答案 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.