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']