繁体   English   中英

SQL order_by表达式

[英]SQL order_by an expression

假设我有一列包含1-100之间的浮点值。

我希望能够将该值转换为介于1到10之间的不太精确的整数,然后对这个新值进行排序。

想要使排序不那么精确似乎有些奇怪,但是SQL语句按2列进行排序,如果第一列过于精确,则2nd order列将没有权重。

本质上,我想将我的第一个订单分为10组,然后按另一列对每个组进行排序。

SELECT "sites".* FROM "sites" ORDER BY "sites"."rating" DESC, "sites"."price" ASC LIMIT 24 OFFSET 0

编辑:这是一个使用postgresql的Rails应用程序

那是什么SQL? 使用除法函数,必要时将其取整。

在MySQL中,查看DIV命令。 我目前没有方法进行测试,但这可能会帮助您指出正确的方向:

选择“站点”。*从“站点”中按“站点”。“评级” DIV 2 DESC,...

SELECT "sites".* 
FROM "sites" 
ORDER BY FLOOR("sites"."rating"/10) DESC, "sites"."price" ASC 
LIMIT 24 OFFSET 0

使用舍入函数,如下所示:

    Select sites.* 
    from sites
    order by round(sites.rating/10, -1) desc, sites.price desc

这会将99转换为10。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM