presto sql查找按顺序插入特定列值的ID

presto sql查找按顺序插入特定列值的ID,sql,presto,Sql,Presto,我有一张桌子 user_id user_type date_updated 1 Beginner 10/10/2020 1 Moderate 10/11/2020 1 Advanced 10/12/2020 2 Beginner 10/10/2020 2 Moderate 10/11/2020 2 Expert 10/12/2020 2 Advanc

我有一张桌子

user_id  user_type   date_updated

1         Beginner   10/10/2020
1         Moderate   10/11/2020
1         Advanced   10/12/2020
2         Beginner   10/10/2020
2         Moderate   10/11/2020
2         Expert     10/12/2020
2         Advanced   10/13/2020
我正在寻找sql来查找用户id,用户类型为(初学者->中级->高级),按日期按顺序递增更新

上表的结果应该是用户id 1,因为它有初学者(2020年10月10日)->中级(2020年10月11日)->高级(2020年10月12日)


用户id 2不合格,因为所有必需的类型没有相互遵循初学者->中级->专家高级

一种方法是在
中使用条件逻辑进行聚合

select user_id
from t
group by user_id
having max(case when user_type = 'Beginner' then date_updated end) < max(case when user_type = 'Moderate' then date_updated end) and
       max(case when user_type = 'Moderate' then date_updated end) < max(case when user_type = 'Advanced' then date_updated end);

一种方法使用聚合:

select user_id
from mytable
group by user_id
having array_agg(user_type order by date_updated) = array['Beginner', 'Moderate', 'Advanced']

我也不希望在所有必需的用户类型之间有任何其他用户类型。用更精确的细节更新了问题。
select user_id
from mytable
group by user_id
having array_agg(user_type order by date_updated) = array['Beginner', 'Moderate', 'Advanced']