Я хочу сделать специальный запрос для оценки членов команды.Каждый участник получит оценку, а те, кто наберет более 80-го процентиля от оценки этой команды, получат бонус.Однако я хочу добавить условие, чтобы оценка 80-го процентиля вычислялась только на основе этих показателей> 0.
Например, если команда А имеет
[0, 0, 0.6, 0.6, 0.8, 0.8]
, то процентиль будетрассчитывается с использованием
[0.6, 0.6, 0.8, 0.8]
, в результате чего будет 0,8.Иначе, если у команды только 0 очков, team_80th_score будет 0.
Таблица выглядит следующим образом, с team_80th_score * - желаемый результат.
team| member | score | team_80th_score*
----+-----------+------+--------
A | Alex | 0 | 0.8
A | Abby | 0 | 0.8
A | Hunt | 0.6 | 0.8
A | Tyler | 0.6 | 0.8
A | Jack | 0.8 | 0.8
A | Mile | 0.8 | 0.8
B | John | 0 | 0
B | Amy | 0 | 0
B | Alice | 0 | 0
Я использую HiveSQL, и поймите, что построение на этой фундаментальной оконной функции будет способом пойти
select team, member, score,
percentile_approx(score, 0.8) over (partition by team) as team_80th_score
from table;
Но я не знаю, как включить условия, чтобы просто считать счет> 0 (для случая, подобного команде А)), и если сумма (оценка) для группы по команде равна 0, тогда 0 заканчивается как team_80th_score (для случая, подобного команде B).
Что бы вы порекомендовали мне сделать в этом случае?