Создание загрузочных образцов в T-SQL

Есть ли у кого-нибудь идеи по созданию загруженного образца строк в T-SQL? Проблема с использованием чего-то вроде NEWID() или RAND(), а затем просто сортировка заключается в том, что вы создаете случайную выборку без замены. Бутстрапирование должно выполняться путем сэмплирования с заменой.

Ответ 1

Здесь одно решение. Он начинается с назначения идентификатора строки каждой строке в таблице совокупности.

Далее, равномерное случайное целое число между 1 и числом строк населения включительно генерируется с помощью вызова RAND() через представление и функцию RandMod(), как описано в Вопрос 3531450.

Эти два запроса объединяются для создания случайной выборки с заменой.

Чтобы получить загрузочный образец размера K < N, сортируйте по NEWID() и возьмите верхние K строк.

SELECT TOP K 
    key
    , NEWID()
FROM 
(
    SELECT CAST(1 + (SELECT COUNT(*) FROM table))*RandMod() AS int) AS rowchoice
    FROM table
) AS r
LEFT OUTER JOIN
(
    SELECT key
        , ROW_NUMBER() OVER(ORDER BY key) AS rowid
    FROM table
) AS t
ON rowchoice = rowid
ORDER BY 2