我有一个列号rating
,编号为0 - 1000
我想按rating ASC
订购这些行,但我希望如果等级在0-99之间,它们将具有相同的排序顺序(100-199,200-299等相同)。我想从DB返回时随机化这些组
这可以用SQL吗?
示例:
这是初始表
这是经过评级asc
的常规订单后的表格
并使用100的步骤组执行顺序,然后随机化
答案 0 :(得分:1)
只需将评分除以100,然后使用random()
:
SELECT
*
FROM
T
ORDER BY Rating/100,random()
假设Rating
是一个整数,除法会自动将结果截断为整数,从而轻松地将199/100
和101/100
视为1
。
答案 1 :(得分:0)
可能尝试使用偏移量
实施例
SELECT rating from FROM ratingtable ORDER BY rating ASC LIMIT 100 OFFSET 0;
这将显示1-100
之间的评级显示101-200之间的等级,只需将偏移设置为100
答案 2 :(得分:0)
不太明白你想要达到的目标,但我认为你应该尝试使用OVER PARTITION。试试这个:
SELECT rating, userid, rank() OVER (PARTITION BY 100 ORDER BY rating ASC) FROM ratingtable ;