簡體   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