【问题标题】:Aggregation over STRUCT in BQBQ中STRUCT的聚合
【发布时间】:2017-08-28 14:20:19
【问题描述】:

当我运行以下查询时

WITH total_count AS (
  SELECT
    id,
    pid,
    click_ts,
    stacked ,
    SUM(stacked) OVER (PARTITION BY id, pid) AS total_count
  FROM limited_count),   
stacked AS (
  SELECT *
  FROM total_count
  WHERE stacked > 1
)

SELECT
  id,
  pid,
  total_count,
  SUM(stacked) AS stacked 
FROM stacked
GROUP BY 1, 2, 3

我收到一个错误:

没有与参数类型的聚合函数 SUM 匹配的签名:STRUCT。支持的签名: 总和(INT64); SUM(FLOAT64) 在 [21:47]

当我尝试对以下视图进行 SUM(stacked) 时:

WITH total_count AS (
  SELECT
    id,
    pid,
    click_ts,
    stacked ,
    SUM(stacked) OVER (PARTITION BY id, pid) AS total_count
  FROM limited_count), 

SELECT *
FROM total_count
WHERE stacked > 1 

一切正常! 任何想法如何在同一个查询中进行?

【问题讨论】:

  • 嗨,hamsy,请在提出问题时尝试正确格式化您的查询,以便于阅读。越容易阅读你的问题,你就越有可能得到答案:)

标签: sql google-bigquery


【解决方案1】:
#standardSQL
WITH total_count AS (
  SELECT id, pid, click_ts, stacked ,
  SUM(stacked) OVER (PARTITION BY id, pid) AS total_count
  FROM limited_count), 
stacked AS (
  SELECT *
  FROM total_count
  WHERE stacked > 1 ) 
SELECT id, pid, total_count, SUM(stacked.stacked) AS stacked 
FROM stacked
GROUP BY 1,2, 3

【讨论】:

  • 它只是给了我记录的数量,而不是列中值的总和
  • 太棒了!工作!非常感谢!
猜你喜欢
  • 1970-01-01
  • 2020-12-26
  • 2017-09-03
  • 2015-10-21
  • 1970-01-01
  • 2022-06-25
  • 2019-01-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多