sql - BigQuery子查询基于所有外部列的返回数字

标签 sql google-analytics google-bigquery correlated-subquery

考虑以下查询:

#standardSQL
WITH table AS (
  SELECT
  *
  FROM
  `project.dataset.ga_sessions_*`
  WHERE
  _TABLE_SUFFIX = '20180118'
  )
SELECT
date,
device.deviceCategory,
CASE WHEN totals.newVisits IS NOT NULL THEN 1 END newUser,
(SELECT COUNT(DISTINCT returningUser) FROM (SELECT CASE WHEN totals.newVisits IS NULL THEN fullVisitorId END returningUser FROM table)) returningUser
FROM
table


这将返回以下内容:

enter image description here

如您所见,returningUser是一个与外部查询列不相关的子查询。

问题是,如何根据外部查询列获取returningUser数字?理想情况下,我不想加入外部查询列,因为要求是针对所有这些列返回return User number。

我希望能够更新此查询以添加更多外部查询列以及更多子查询,这些子查询的编号基于所有外部查询列。

更新

数据集来自Google Analytics(分析)。这些字段是默认字段,例如在https://support.google.com/analytics/answer/3416091处可用的示例数据集。

返回预期结果的示例查询-但是,它不如我试图开始工作的上述方法那么干净和灵活:

#standardSQL
WITH table AS (
  SELECT
  *
  FROM
  `project.dataset.ga_sessions_*`
  WHERE
  _TABLE_SUFFIX = '20180118'
  )
SELECT
date,
deviceCategory,
COUNT(DISTINCT returningUser) returningUser
  FROM (
  SELECT
    date,
    device.deviceCategory,
    CASE WHEN totals.newVisits IS NOT NULL THEN 1 END newUser,
    CASE WHEN totals.newVisits IS NULL THEN fullVisitorId END returningUser
    FROM
    table)
GROUP BY
date,
deviceCategory


结果:

enter image description here

最佳答案

我无法理解您真正希望查询执行的操作。我最好的猜测是:

SELECT date, deviceCategory, COUNT(newVisits),
       COUNT(DISTINCT COALESCE(s.newVisits, s.fullVisitorId))
FROM `project.dataset.ga_sessions_*` s
WHERE _TABLE_SUFFIX = '20180118'
GROUP BY date, deviceCategory
ORDER BY date, deviceCategory;

关于sql - BigQuery子查询基于所有外部列的返回数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48884711/

相关文章:

sql - 如何根据与先前日期相关的条件按日期找出不同的人数?

sql - SQL中的内连接需要外键吗?

mysql - 如何对不同表和不同过滤器上的多个计数求和

sql - 如何仅从字符串中提取字母数字字符? (SQL 谷歌 BigQuery)

java - 根据周数从MYSQL中检索数据

java - 检查数据库中是否存在条目

html - 如何在Scala Play中将“onclick”事件应用于多个单选按钮选项?

ios - 设置 Google Analytics iOS Swift

ruby-on-rails - 分析和跟踪下载

pandas - 不必要的 .list.item 嵌套在 pyarrow 上传数据框中的 BigQuery 模式中,列表作为列。 enable_list_inference 部分有效?