使用 SQL 确定用户之前是否看过问题
Using SQL to determine whether a user has previously seen a question
我有一个 table,如下所示:
我想添加一个新功能 'question_seen',它可以确定用户以前是否看过特定问题。具有新功能的 table 将如下所示:
如何使用 SQL 命令创建这个新功能?
使用带条件逻辑的 window 函数:
select t.*,
(row_number() over (partition by user_id, question_id order by row_id) > 1) as question_seen
from t;
注意:此 returns 是布尔值而不是 0
/1
。我更喜欢布尔值作为标志,但很容易更改为 0
/1
.
考虑以下方法
select *,
count(1) over user_question_history - 1 question_seen
from data
window user_question_history as (partition by user_id, question_id order by row_id)
我有一个 table,如下所示:
我想添加一个新功能 'question_seen',它可以确定用户以前是否看过特定问题。具有新功能的 table 将如下所示:
如何使用 SQL 命令创建这个新功能?
使用带条件逻辑的 window 函数:
select t.*,
(row_number() over (partition by user_id, question_id order by row_id) > 1) as question_seen
from t;
注意:此 returns 是布尔值而不是 0
/1
。我更喜欢布尔值作为标志,但很容易更改为 0
/1
.
考虑以下方法
select *,
count(1) over user_question_history - 1 question_seen
from data
window user_question_history as (partition by user_id, question_id order by row_id)