SQL 按分组排序

SQL Order by grouping

我有一列 rating,编号为 0 - 1000

我想按 rating ASC 对这些行进行排序,但我希望如果评级在 0-99 之间,它们将具有相同的排序顺序(100-199、200-299 等相同)。这些组我想在从 DB

返回时随机化

SQL可以吗?

示例:

这是初始table

这是按 rating asc

定期订购后的 table

以100步为一组进行排序,然后随机化

可能尝试使用偏移量

例子

SELECT rating FROM ratingtable ORDER BY rating ASC LIMIT 100 OFFSET 0;

这将显示 1-100 之间的评分

要显示 101-200 之间的评分,只需将偏移量设置为 100

只需将评分除以 100,然后使用 random():

SELECT
  *
FROM
  T
ORDER BY Rating/100,random()

假设 Rating 是一个整数,除法会自动将结果截断为整数,因此可以轻松地将 199/100101/100 视为 1.

不太明白你想要达到什么目的,但我认为你应该尝试使用 OVER PARTITION。试试这个:

SELECT rating, userid, rank() OVER (PARTITION BY 100 ORDER BY rating ASC) FROM ratingtable ;