使用 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)