我有一个表questions
,每个问题都有一个difficulty
属性,我需要一个按difficulty
ASC
排序的随机问题,然后跳过20%,限制10%,并随机选择该子集。
我得到的最接近的:
select *, PERCENT_RANK() over ( order by difficulty ) from questions
这将为每一行添加另一列percentage,然后我可以使用where
子句过滤掉required。
然后我意识到PERCENT_RANK
并没有按照我想要的方式工作。它计算的是行的百分比与所有行的所有难度之和的百分比。但我想要的是ROW_NUMBER
与总行数的百分比。
所以我需要这样的东西:
select *, PERCENT_RANK() over ( 'ROW NUMBER SOMEHOW HERE' ) from questions order by difficulty
1条答案
按热度按时间laik7k3q1#
我认为,如果将
row_number()
和count()
分析(窗口)函数结合起来,就可以简单地获取20%到30%之间的行。大概是这样的
order by random()
只是我对你最后评论"和随机的子集"的回应。