SQL内部联接错误-无法联接两个表:“获取表的架构时出现问题。请重试。”

SQL内部联接错误-无法联接两个表:“获取表的架构时出现问题。请重试。”,sql,postgresql,join,left-join,Sql,Postgresql,Join,Left Join,我对POSTGRESQL有以下请求。我不知道它是从哪里来的,但每次运行联接查询时都会出现一个错误:获取表的模式时出现问题。再试一次 背景: 我正在尝试使用名为sheets_app.tracks的数据库中的子查询获取会话表;然后,我在一个新表中重用这个子查询,以将用户映射到会话 此联接非常简单,但仍然不起作用: 这一个与左连接上的更多条件相同 你知道它是从哪里来的吗 谢谢大家! 我不认为这是Postgres的错误信息。您使用哪种工具来运行这些查询?这只是一个建议,但如果每个SELECT语句有1个C

我对POSTGRESQL有以下请求。我不知道它是从哪里来的,但每次运行联接查询时都会出现一个错误:获取表的模式时出现问题。再试一次

背景: 我正在尝试使用名为sheets_app.tracks的数据库中的子查询获取会话表;然后,我在一个新表中重用这个子查询,以将用户映射到会话

此联接非常简单,但仍然不起作用:

这一个与左连接上的更多条件相同

你知道它是从哪里来的吗


谢谢大家!

我不认为这是Postgres的错误信息。您使用哪种工具来运行这些查询?这只是一个建议,但如果每个SELECT语句有1个CTE,而不是itI中所有SELECT语句都有1个CTE,那么您的代码将更具可读性,更易于调试。我已经在pgAdmin上运行了该工具,并且我有一个等待查询完成的过程,它不会以@a_horse__的名字结束
WITH sessions as (
SELECT
    user_id || '-' || row_number() over(partition by user_id order by event_timestamp) as session_id
  , user_id
  , event_timestamp as session_start_at
  , lead(event_timestamp) over(partition by user_id order by event_timestamp) as next_session_start_at
FROM ( 
    SELECT
      user_id
        ,   event_timestamp
        , last_event_timestamp
        , (event_timestamp-last_event_timestamp) as inactivity_time
    FROM (
        SELECT
            user_id
            , event_timestamp
            , LAG(event_timestamp) over (PARTITION BY user_id order by timestamp) as last_event_timestamp
        FROM (
            SELECT
                user_id
                , timestamp
                , EXTRACT("EPOCH" FROM timestamp) as event_timestamp
                
            FROM
                sheets_app.tracks as e
        ) one
    ) two
) event
WHERE (event.inactivity_time > 30 OR event.inactivity_time is null))


SELECT 
    *       
FROM sessions
LEFT JOIN sheets_app.tracks on sessions.user_id = sheets_app.tracks.user_id
WITH sessions as (
SELECT
    user_id || '-' || row_number() over(partition by user_id order by event_timestamp) as session_id
  , user_id
  , event_timestamp as session_start_at
  , lead(event_timestamp) over(partition by user_id order by event_timestamp) as next_session_start_at
FROM ( 
    SELECT
      user_id
        ,   event_timestamp
        , last_event_timestamp
        , (event_timestamp-last_event_timestamp) as inactivity_time
    FROM (
        SELECT
            user_id
            , event_timestamp
            , LAG(event_timestamp) over (PARTITION BY user_id order by timestamp) as last_event_timestamp
        FROM (
            SELECT
                user_id
                , timestamp
                , EXTRACT("EPOCH" FROM timestamp) as event_timestamp
                
            FROM
                sheets_app.tracks as e
        ) one
    ) two
) event
WHERE (event.inactivity_time > 30 OR event.inactivity_time is null))


SELECT
  COUNT(*) AS sessions_count,
  AVG(duration) AS average_session_duration
FROM (
  SELECT 
        session_id
        , (EXTRACT("EPOCH" FROM MIN(events.timestamp))-EXTRACT("EPOCH" FROM MAX(events.timestamp))) AS duration
  FROM sessions
  LEFT JOIN sheets_app.tracks as event on sessions.user_id = event.user_id
        AND EXTRACT("EPOCH" FROM events.timestamp) >= sessions.session_start_at
        AND EXTRACT("EPOCH" FROM events.timestamp) < sessions.next_session_start_at OR sessions.next_session_start_at is null) 
  GROUP BY 1
    ) as events