[英]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.