Как получить случайные выборки определенных групп данных - PullRequest
0 голосов
/ 05 июня 2018

У меня тысячи строк данных.Два из этих столбцов называются Площадь и Подрайон.В каждой области имеется около 4, 5 или более подрайонов.

Я хочу выбрать случайную выборку записей, например, топ-10 для каждой области и подобласти, но не могу придумать, как это сделать эффективно или быстро.

Я подумал о том, чтобы UNION выбирать каждый район и подрайон каждый раз, но мне нужно было бы сделать 120 UNION операторов таким образом, так как есть 120 строк различных областей и подрайонов.

Та же проблема преобладает, когда я подумал о том, чтобы сделать Case утверждения в списке SELECT.

Я подумал, что, возможно, я мог бы каким-то образом использовать CTE или WHILE LOOP, но без особой удачи.Может ли здесь быть полезно использовать функции Window?

Есть идеи?

1 Ответ

0 голосов
/ 05 июня 2018

Вы можете попробовать, как описано ниже, выбрать случайные 10 записей для каждого подрайона.

select * 
from   (select *, 
               row_number() 
                 over( 
                   partition by subarea 
                   order by newid()) RN 
        from   yourtable) T 
where  rn <= 10 

В приведенном выше запросе order by newid() даст вам случайные записи, а partition BY subarea сгенерирует различное число для каждого подрайона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...