我正在尝试每周滚动了解用户是否参加或未参加活动。但是,我只想将他们列为“未参加”如果他们上周参加了。例如,如果用户参加了第 1 周和第 7 周,则他们在第 2 周和第 8 周将仅被计为“未参加”。
数据的简化示例:
表事件,其中包括所有事件日期(每周)和唯一事件 ID(时间升序)
Event_Date | Event_ID |
---|---|
2023-03-09 | 1 |
2023-03-16 | 2 |
2023-03-23 | 3 |
表用户显示他们参加的活动日期和 ID:
Event_Date | Event_ID | User_ID |
---|---|---|
2023-03-09 | 1 | 151 |
2023-03-16 | 2 | 151 |
2023-03-23 | 3 | 151 |
2023-03-09 | 1 | 299 |
2023-03-23 | 3 | 299 |
2023-03-16 | 2 | 373 |
我的问题:如何使用 SQL 完成以下输出? (用户299参加了活动1,但未参加活动2;用户373参加了活动2,但未参加活动3)
Missed_Event_Date | Missed_Event_ID | User_ID |
---|---|---|
2023-03-16 | 2 | 299 |
2023-03-23 | 3 | 373 |
我尝试过使用
SELECT Event_ID + 1, User_ID FROM users u WHERE NOT EXISTS (SELECT 1 FROM events WHERE u.Event_ID=e.Event_ID + 1)
没有产生正确的输出
假设
Event_ID
增加 1,您也可以考虑以下内容。