Как вывести только случайные xx% записей выходных запросов в Redshift? - PullRequest
0 голосов
/ 18 февраля 2020

Есть ли способ вывести только процент от общего количества выходных записей в Redshift, если вы не знаете количество возвращенных записей?

Допустим, результат запроса будет 1000 записей. Вы просто хотите выбрать 60% случайным образом ... Так что в этом случае будет 600 записей.

Если бы я знал, что выход всегда равен 1000, я бы использовал LIMIT 600. Но я не знаю, сколько записей будет возвращено, и я хочу, чтобы он был переменным ..

Любые идеи?

PS: пытался использовать LIMIT (0,6 * COUNT (*)), но он не работал .. Ошибка состояла в том, что "LIMIT не принимает переменную"

1 Ответ

0 голосов
/ 18 февраля 2020

Если вам не нужно точное количество записей, но около 60%, тогда я бы порекомендовал:

where random() <= 0.6

Если вам нужно точное число, то:

select t.*
from (select t.*,
             row_number() over (order by random()) as seqnum,
             count(*) over () as cnt
      from t
     ) t
where seqnum <= 0.6 * cnt;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...