擅长:python、mysql、java
<p>基本思想是<code>row_number()</code>。如果您只想对桶进行随机抽样:</p>
<pre><code>select t.*
from (select t.*,
row_number() over (partition by line, course order by dbms_random.random) as seqnum
from t
) t
where seqnum = 1;
</code></pre>
<p>如果您确实希望在存储桶上进行循环(以确保选择了最大数量),那么随机性是不够的:</p>
<pre><code>select t.*
from (select t.*,
row_number() over (partition by line, course order by seqnum_bucket, dbms_random.random) as seqnum
from (select t.*
row_number() over (partition by line, course, bucket order by dbms_random.random) as seqnum_bucket
from t
) t
) t
where seqnum = 1;
</code></pre>