Доступ к запросу для группировки и выбора двух случайных строк в каждой группе - PullRequest
0 голосов
/ 16 января 2020

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

Ниже приведены данные для этого проекта.

ID  Complaint Handler   Handler ID  Reference   Outcome Handler Notes
1   John Doe    h384    R38423  Uphold  Not Applicable
2   Ryan Jones  h632    R38482  Uphold  Not Applicable
3   Chris Smith h238    R84823  Defend  Not Applicable
4   Emily Surry h634    R48384  Reject  Not Applicable
5   Elle Smith  h123    R48823  Uphold  Not Applicable
6   Jane Doe    h324    R48282  Uphold  Not Applicable
7   Joe Bloggs  h538    R83322  Reject  Not Applicable
8   Ryan Jones  h632    R38299  Defend  Not Applicable
9   Chris Smith h238    R83482  Reject  Not Applicable
10  Chris Smith h238    R91823  Reject  Not Applicable
11  Joe Bloggs  h538    R18291  Uphold  Not Applicable

Я использовал следующий запрос для выбора всех ссылок на уникальные обработчики обращений.

SELECT Cases.[Handler ID]
FROM Cases
GROUP BY Cases.[Handler ID];

Мне нужно l oop через все эти уникальные ссылки и выполнить следующий запрос

SELECT TOP 2 * 
FROM Cases
WHERE Cases.[Handler ID] = 'XXXXXX'
ORDER BY Rnd(ID)

Примером результата будет

ID  Complaint Handler   Handler ID  Reference   Outcome Handler Notes
1   John Doe    h384    R38423  Uphold  Not Applicable
2   Ryan Jones  h632    R38482  Uphold  Not Applicable
3   Chris Smith h238    R84823  Defend  Not Applicable
4   Emily Surry h634    R48384  Reject  Not Applicable
5   Elle Smith  h123    R48823  Uphold  Not Applicable
6   Jane Doe    h324    R48282  Uphold  Not Applicable
7   Joe Bloggs  h538    R83322  Reject  Not Applicable
8   Ryan Jones  h632    R38299  Defend  Not Applicable
10  Chris Smith h238    R91823  Reject  Not Applicable
11  Joe Bloggs  h538    R18291  Uphold  Not Applicable

Пример результата: строка 9 случайно удалена, так как три Криса Смита.

Другие строки не затронуты, так как есть 2 или меньше результатов.

1 Ответ

0 голосов
/ 16 января 2020

Я думаю, что это будет работать в MS Access:

select c.*
from cases as c
where c.id in (select top 2 c2.id
               from cases as c2
               where c2.handler = c.handler
               order by rnd(-Timer() * c2.id)
              );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...