Как правило, вы будете использовать row_number()
, order by
и выбирать n-е значения. Итак, для примерно 1% стратифицированного образца выполните:
select t.*
from (select t.*,
row_number() over (order by category, rand()) as seqnum
from t
) t
where mod(seqnum, 101) = 1
order by category;
Основная идея заключается в том, что вы можете получить стратифицированную выборку, упорядочив набор результатов по категориям и выполнив n-ю выборку результата.