将行聚合数据与单个行合并



>我有一个如下所示的表格

base_data

['python','''
session_id event_type player_guess correct_answer
1 '蟒蛇'
1 guess'javascript'NULL
1 guess'scala'NULL
1 all_answered NULLjavascript','hadoop']
2 三角形'
2 平方'
2 all_answered 空[ '三角形', '正方形']

您可以使用窗口函数来获取每一行的正确答案。 然后,如何管理结果取决于列的类型。 如果是字符串,你可以只使用like

select t.*,
(case when event_type = 'all_answered' or
max(correct_answer) over (partition by session_id) like  '%''' || player_guess || '''%'
then 1 else 0 
end) as was_guess_correct
from t;

请注意,correct_answerNULL在"猜测"行中,因此max()有效(假设每个会话有一个正确答案行)。

最新更新