Организация команд по уровням способностей с использованием T- SQL, но одна команда имеет смешанный уровень способностей - PullRequest
1 голос
/ 09 марта 2020

У меня есть таблица, в которой отображаются команды по уровням способностей. Один - все начинающие, другой - продвинутый, а третий состоит из начинающих и продвинутых.

Team       Ability_Level  
------------------------
Team 1     Beginners.  
Team 2     Advanced.  
Team 3     Beginners.  
Team 3     Advanced.  
Team 4     Beginners.  
Team 4     Advanced.  
Team 5     Advanced.  

Результат должен быть таким:

Team 1  Beginners  
----------------------
Team 2  Advanced  
Team 3  Advanced  
Team 4  Advanced  
Team 5  Advanced  

Команды со всеми "продвинутыми" или с «начинающие и продвинутые» отображаются как «продвинутые». Команды только с «новичками» будут отображаться как «новички».

Буду признателен за любую помощь!

Ответы [ 3 ]

1 голос
/ 09 марта 2020

Для этого набора данных агрегация может выполнять:

select team, min(ability_level) ability_level
from mytable
group by team
having min(ability_level) = 'Advanced'

Почему это работает, потому что для строки 'Advanced' меньше 'Beginner'. Таким образом, если группа содержит оба уровня, min() отдает приоритет 'Advanced'.

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

(Выберите Team, Ability_Level, Replace (Ability_Level, "начинающий и продвинутый", "продвинутый") как New_Ability_Level из группы your_table на Replace (Ability_Level, "начинающий и продвинутый", "продвинутый)) как порядок New_Ability_Level по команде)

Команды со всеми «продвинутыми» или «начинающими и продвинутыми» отображаются как «продвинутые». Команды только с «новичками» будут отображаться как «новички».

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

Просто еще один вариант - неясно, хотите ли вы Команда 1

Полное раскрытие: Агрегация GMB будет более производительной (+1)

Пример

Select top 1 with ties * 
 From  YourTable
 Order by row_number() over (partition by Team order by Ability_Level)

Возвращает

Team    Ability_Level
Team 1  Beginners       --<< Team 1 is just beginners
Team 2  Advanced
Team 3  Advanced
Team 4  Advanced
Team 5  Advanced
...