基本上我有用户ID和点击日期,我想做的是检查一个用户是否在7天内和90天内点击过。这是我所拥有的,但它不工作,因为我没有得到任何“是”的结果,我7天的窗口,我应该(已经检查)和我得到所有的是90天窗口的结果。我希望列是分开的,因此有两个case语句。示例:如果用户已单击,则在“7天”列中的“用户id”行前面将显示“是”
SELECT user_id,
CASE WHEN click_date >'2020-04-30' AND click_date < '2020-05-08'
THEN "YES" ELSE "NO" END AS Visited_within_7_Days,
CASE WHEN click_date >'2020-05-01' AND click_date < '2020-08-01'
THEN "YES" ELSE "NO" END AS Visited_within_90_Days
FROM my_table
我的输出
USER IDS 7_day _visit
USER A NO
USER B NO
USER C NO
USER D NO
USER IDS 90_day _visit
USER A YES
USER B YES
USER C YES
USER D YES
期望输出
USER IDS 7_day _visit
USER A YES
USER B NO
USER C NO
USER D NO
USER IDS 90 day _visit
USER A YES
USER B NO
USER C NO
USER D YES
我已经检查了我的“点击日期”列是否包含所有日期
3条答案
按热度按时间x9ybnkn61#
假设您的日期比较是正确的,并且每个日期有多行,那么您需要聚合。我想这正是你想要的:
cunj1qz12#
根据您关于每个用户id有多行的评论,您将需要某种聚合,否则您将得到数据库中每一行的yes/no,而不是每个不同的用户。一种选择是:
iugsix8n3#
这就是我最后用的,思想?