Ниже для BigQuery Standard SQL
#standardSQL
SELECT empid, join_date, sys_assignment,
IF((option AND min_flag) OR (NOT option AND NOT grp AND max_flag), 'Y', 'N') flag
FROM (
SELECT *,
join_date <= sys_assignment grp,
COUNT(1) OVER(PARTITION BY empid) = COUNTIF(join_date <= sys_assignment) OVER(PARTITION BY empid) option,
sys_assignment = MIN(sys_assignment) OVER(PARTITION BY empid, join_date <= sys_assignment) min_flag,
sys_assignment = MAX(sys_assignment) OVER(PARTITION BY empid, join_date > sys_assignment) max_flag
FROM `project.dataset.table`
)
применительно к вашим образцам данных - приведенный выше запрос дает результат ниже (который выглядит для меня именно так, как и ожидалось)
![enter image description here](https://i.stack.imgur.com/Ravia.png)