Найти один случайный Set_id от каждого уникального Skill_id - PullRequest
0 голосов
/ 14 мая 2019

У меня есть свой набор столов, где есть наборы вопросов, Есть 2 набора вопросов для каждого навыка, я ищу любой случайный набор бумаги для каждого уникального skill_id.

set_id      skill_id    set_name
----------- ----------- -------------
1           1           ENG1
2           1           ENG2
3           2           MTH1
4           2           MTH2
5           3           GRN1
6           3           GRN2
7           5           LOG1
8           5           LOG2
9           6           TEC1

Шаблон для навыков, которые я ищу: skill_id (1,2,3,5) и skill_id (1,2,5,6)

Вывод должен быть похож на

для шаблона (1,2,3,5)

set_id      skill_id    set_name
----------- ----------- -------------
1           1           ENG1
3           2           MTH1
6           3           GRN2
7           5           LOG1

для шаблона (1,2,5,6)

set_id      skill_id    set_name
----------- ----------- -------------
2           1           ENG2
3           2           MTH1
7           5           LOG1
9           6           TEC1

Код, который я пытаюсь получить случайные числа:

select (case when (select dbo.Random(1,2,RAND())) = 1 then max(skill_id)
  else min(skill_id) end)
  ,  set_id, set_name
from ques_set
where skill_id in (
  select val
  from Split((select skillsid from highest_qual where userid = 1 ), ',')
)
group by set_id, set_name

1 Ответ

2 голосов
/ 14 мая 2019

вы можете использовать order by newid(), чтобы сделать рандомизацию

select *
from
(
    select set_id, skill_id, set_name,
           rn = row_number() over (partition by skill_id order by newid())
    from   ques_set 
    where  skill_id in (1,2,3,5)
) as d
where d.rn = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...