如何获得;会议“开始”&引用;“用户”;及;“屏幕视图”;分组方式;应用程序版本?Firebase BigQuery SQL

如何获得;会议“开始”&引用;“用户”;及;“屏幕视图”;分组方式;应用程序版本?Firebase BigQuery SQL,firebase,google-bigquery,Firebase,Google Bigquery,我是Firebase BigQuery的初学者,我尝试通过应用程序版本(设备.操作系统版本)获取用户和会话组的数量 到目前为止,我一直在使用此代码(但没有GroupBy) 结果很好: Row | all_users | session | screenView 1 | 80 | 150 | 550 但当我尝试按应用程序版本分组时,每个应用程序版本的用户数是正确的和不同的,但所有应用程序版本的会话数和屏幕视图数始终相同。代码如下: SELECT device.op

我是Firebase BigQuery的初学者,我尝试通过应用程序版本(设备.操作系统版本)获取用户和会话组的数量

到目前为止,我一直在使用此代码(但没有GroupBy)

结果很好:

Row | all_users | session | screenView
1   | 80        | 150     | 550
但当我尝试按应用程序版本分组时,每个应用程序版本的用户数是正确的和不同的,但所有应用程序版本的会话数和屏幕视图数始终相同。代码如下:

SELECT 
  device.operating_system_version AS os_Version,
  COUNT(DISTINCT user_pseudo_id) AS all_users,
  (
    SELECT
      COUNT(user_pseudo_id)
    FROM
      `xxxx.analytics_xxxx.events_20191105`
    WHERE
      event_name = 'session_start'
  ) AS session,
  (
  SELECT
      COUNT(event_name) as totalScreen
    FROM
      `xxxx.analytics_xxxx.events_20191105`
    WHERE
      event_name = 'newScreen'
  ) AS screenView
FROM `xxxx.analytics_xxxx.events_20191105`
GROUP BY os_Version
结果是:

Row | os_Version | all_users | session | screenView
1   | 9          | 14        | 150     | 550
2   | 6.0.1      | 4         | 150     | 550
3   | 8.0.0      | 9         | 150     | 550
4   | 7.0        | 3         | 150     | 550
...
我不理解这种行为。这就像“groupby”只应用于“user”而不应用于子查询一样

谢谢

这就像“分组依据”只应用于“用户”而不是子查询一样。
这正是发生的情况,子查询为每个os_版本的“组”返回相同的结果

我会像这样重写查询:

select
  device.operating_system_version as os_Version,
  count(distinct user_pseudo_id) as all_users,
  count(case when event_name = 'session_start' then 1 else null end) as session,
  count(case when event_name = 'newScreen' then 1 else null end) as screenView
from `xxxx.analytics_xxxx.events_20191105`
group by 1
这就像“分组依据”只应用于“用户”而不应用于子查询一样。
这正是发生的情况,子查询为每个os_版本的“组”返回相同的结果

我会像这样重写查询:

select
  device.operating_system_version as os_Version,
  count(distinct user_pseudo_id) as all_users,
  count(case when event_name = 'session_start' then 1 else null end) as session,
  count(case when event_name = 'newScreen' then 1 else null end) as screenView
from `xxxx.analytics_xxxx.events_20191105`
group by 1