Выборка строк в разные таблицы на основе критериев - PullRequest
0 голосов
/ 09 марта 2020

- Я сожалею, что не могу предоставить какой-либо код, потому что я на очень ранней стадии программирования в SQL -

Привет,

моя задача лучше описывается следующим образом:

У меня есть 800 кандидатов, из которых я хочу ВЫБРАТЬ 400 лучших (Application.Score) из этих 400. Я хочу создать 10 групп по 40 кандидатов. Эти группы должны быть разными с точки зрения НАЦИОНАЛЬНОСТИ (не более 20% от одной НАЦИОНАЛЬНОСТИ в одной группе), ГЕНДЕР (не менее 40/60) и Возраст (сгруппированы как менее 28 и более 28).

Я подумал об использовании Application.Score в качестве основного критерия, а затем каким-то образом заполнить группы, начиная с самых высоких пороговых значений для вторичных критериев (ВОЗРАСТ, ГЕНДЕР, НАЦИОНАЛЬНОСТЬ). Это означает, что, если 20% гражданства входят в группу, они больше не принимают это гражданство и не выбирают следующую наивысшую оценку по заявке. Для национальности менее 20%. Тем не менее, я понятия не имею, как поместить это в код ... Можете ли вы указать мне правильное направление?

Как бы вы go об этой задаче?

1 Ответ

0 голосов
/ 09 марта 2020

Вы можете использовать "n" образец. Идея заключается в следующем:

  • Сначала определите 400 кандидатов, которых вы хотите.
  • Во-вторых, перечислите их по национальности, полу и возрасту.
  • Затем возьмите n-й пример.

Последнее можно сделать с помощью арифмети c, потому что вы знаете общую сумму:

select t.*,
       (seqnum % 10) as grouping
from (select t.*,
             row_number() over (order by nationality, gender, age) as seqnum,
      from (select t.*
            from t
            order by application_score desc
            fetch first 400 rows only
           ) t
     ) t;
...