Получить случайный выбор строк, равных по числу на группу - PullRequest
1 голос
/ 11 июля 2011

У меня есть таблица, SCCalls, в которой есть столбец Call_CalT_Code.Call_CalT_Code может быть одним из нескольких различных значений.В нем также есть столбец Call_InDate, по которому я буду фильтровать.

Мне нужно получить 1000 случайных записей (отфильтрованных по Call_InDate), распределенных поровну по числу для каждого Call_CalT_Code.

Как я могу это сделать?

Редактировать (gbn): решение должно работать с базой данных, которая работает в режиме совместимости 80 на SQL Server 2005

1 Ответ

2 голосов
/ 11 июля 2011

Возможно, вам придется поиграться с числами в дивизионе.

Если у вас 9 значений, то 1000/9 = 111, поэтому вы получите только 999 строк.Поэтому я использовал 1100, а затем ТОП 1000.

SELECT TOP 1000
   *
FROM
   (
   SELECT
       *,
       ROW_NUMBER() OVER (PARTITION BY Call_CalT_Code ORDER BY NEWID()) AS rn
    FROM
       MyTable
      ) foo
WHERE
    rn <= 1100 / (SELECT COUNT(distinct Call_CalT_Code) FROM MyTable)
ORDER BY
    rn
...