Как рассчитать статистически значимый размер выборки на основе общего количества записей?(Postgres) - PullRequest
0 голосов
/ 20 января 2019

Допустим, я хочу получить случайную выборку клиентов, которые купили в определенном отделе в прошлом году.

Я хочу убедиться, что случайная выборка из каждого отдела статистически значима (используя выборкуформула размера) из общего числа клиентов, которые приобрели в отделе (если в отделе было 50 миллионов клиентов, совершивших минимум 1 покупку, требуемый размер выборки составил бы около 390).

Iищу что-то похожее на это: я бы закончил свой SQL-запрос с помощью ORDER BY random () LIMIT ( здесь подзапрос, чтобы определить правильный размер выборки )

Как я могу реализовать формулу размера выборки в подзапросе, из которого извлекается инструкция LIMIT BY?

1 Ответ

0 голосов
/ 20 января 2019

Вы можете использовать оконные функции:

select t.*
from (select t.*,
             row_number() over (partition by department order by rand()) as seqnum,
             count(*) over (partition by department) as cnt
      from t
     ) t
where seqnum < <your formula based on department size here>;

Я не знаю, какая у вас формула для статистической значимости, но вы можете подключить ее, используя размер отдела (cnt), вычисленный в подзапросе.

...