Sql BigQuery-选择列表表达式引用既不分组也不聚合的列用户\u伪\u id

Sql BigQuery-选择列表表达式引用既不分组也不聚合的列用户\u伪\u id,sql,google-bigquery,Sql,Google Bigquery,我正在尝试左连接两个查询,这两个查询按用户id从两个表中分组,如下所示: t1:用户会话的数量 用户id 厕所 厕所 布莱恩 以下是您如何做到这一点: select user_id,num_sessions,num_search from ( select user_id , count(*) num_sessions from t1 group by user_id ) t1 left join ( select user_id , count(*) num_search from t2 g

我正在尝试左连接两个查询,这两个查询按用户id从两个表中分组,如下所示:

t1:用户会话的数量

用户id 厕所 厕所 布莱恩
以下是您如何做到这一点:

select user_id,num_sessions,num_search
from (
select user_id , count(*) num_sessions
from t1
group by user_id 
) t1
left join (
select user_id , count(*) num_search
from t2
group by user_id 
) t2 on t1.user_id = t2.user_id

你的代码有点问题。我将在下面输入您代码的正确形式

SELECT t1.user_id,COUNT(t1.user_id) as num_sessions,temp.num_search
FROM t1
LEFT JOIN (
SELECT user_id, COUNT(user_id) as num_search FROM t2
GROUP BY user_id) temp
ON t1.user_id= temp.user_id
GROUP BY t1.user_id,temp.num_search
ORDER BY COUNT(t1.user_id) DESC

您还可以通过聚合和
联合所有人来实现这一点:

select user_id, sum(is_session) as num_sessions, sum(is_search) as num_searches
from ((select user_id, 1 as is_session, 0 as is_search
       from number_of_user_sessions
      ) union all
      (select user_id, 0, 1
       from number_of_searches
      )
     ) u
group by user_id;
或相当于:

select user_id, countif(which = 'session') as num_sessions, 
       countif(which = 'search') as num_searches
from ((select user_id, 'session' as which
       from number_of_user_sessions
      ) union all
      (select user_id, 'search'
       from number_of_searches
      )
     ) u
group by user_id;

这将返回一个新错误
SELECT list expression references temp.num\u search,该错误既没有分组也没有聚合。我解决了这个问题。可能现在可以工作了