SQL按分组排序

时间:2015-03-19 05:24:00

标签: sql postgresql group-by sql-order-by

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

我想按rating ASC订购这些行,但我希望如果等级在0-99之间,它们将具有相同的排序顺序(100-199,200-299等相同)。我想从DB返回时随机化这些组

这可以用SQL吗?

示例:

这是初始表

enter image description here

这是经过评级asc

的常规订单后的表格

enter image description here

并使用100的步骤组执行顺序,然后随机化

enter image description here

3 个答案:

答案 0 :(得分:1)

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

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

假设Rating是一个整数,除法会自动将结果截断为整数,从而轻松地将199/100101/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 ;