You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL代码末尾的额外FROM weeks是否错误?求运行逻辑解析

关于PostgreSQL代码中重复FROM weeks的问题解析

这段代码里末尾的第二个FROM weeks是语法错误,PostgreSQL的SELECT语句不允许出现两个FROM子句,直接运行会报错。

原代码的意图与修正后的正确写法

原代码想要实现的是统计用户注册后0-3周内,每周的回访用户数量(即注册后对应周内有操作行为的用户数)。修正后的正确代码应该去掉重复的FROM weeks:

WITH weeks AS (
  SELECT make_interval(weeks => n) as week 
  from generate_series(0, 3) AS n
)
SELECT week, 
       count(x.user_email) as "Returning Users"
FROM weeks
  LEFT JOIN (
     SELECT act.user_email, age(act.timestamp, acc.timestamp) as diff
     FROM accounts acc
       JOIN action act on act.user_email = acc.user_email
  ) x ON x.diff >= week and x.diff < week + '1 week'::interval
GROUP BY week;

运行逻辑说明

  1. 生成周时间区间:weeks公共表表达式通过generate_series(0,3)生成0到3的整数,再转换为周级时间间隔,得到0 weeks、1 weeks、2 weeks、3 weeks这4个区间标识。
  2. 计算用户行为时间差:子查询x关联用户注册表accounts和操作行为表action,算出每个用户每次操作与注册时间的间隔diff。
  3. 分组统计回访用户:外层用weeks左联子查询x,匹配时间差diff落在[week, week+1周)区间内的记录,最后按week分组,统计每个周区间内的回访用户数(左联后无匹配的记录会被count(x.user_email)忽略,即该周无回访用户时统计结果为0)。

内容的提问来源于stack exchange,提问作者Nguyen Bang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 01:45:36