BigQuery:自加入后按月分组计数器

问题描述 投票:0回答:1

我有这样的表:

My table

我正在尝试建立一个查询,该查询将显示按keywordName和month分组的特定partnerId计数器。为了解决第一部分(不按月分组),我构建了以下查询:

SELECT keywordName, COUNT(keywordName) as total, IFNULL(b.ebay_count, 0) as ebay, IFNULL(c.amazon_count, 0) as amazon,
    FROM LogFilesv2_Dataset.FR_Clickstats_v2 a
  LEFT JOIN 
  (SELECT keywordName as kw , SUM(CASE WHEN partnerId='eBay' THEN 1 ELSE 0 END) as ebay_count
      FROM LogFilesv2_Dataset.FR_Clickstats_v2
      WHERE partnerId = 'eBay' GROUP BY kw) b
  ON keywordName = b.kw
  LEFT JOIN 
  (SELECT keywordName as kw , SUM(CASE WHEN partnerId='AmazonApi' THEN 1 ELSE 0 END) as amazon_count
      FROM LogFilesv2_Dataset.FR_Clickstats_v2
      WHERE partnerId = 'AmazonApi' GROUP BY kw) c
  ON keywordName = c.kw

WHERE keywordName = 'flipper' -- just to filter out single kw. 
GROUP BY keywordName, ebay, amazon

效果很好,并返回以下输出:

query result

现在,我尝试按月进行其他分组,但是我的所有尝试均返回了错误的结果。最终输出应该与此类似:

desired result

sql join google-bigquery
1个回答
1
投票

您可以通过条件聚合来做到这一点:

select
    date_trunc(dt, month) dt,
    keywordName,
    count(*) total,
    sum(case when partnerId = 'eBay' then 1 else 0 end) ebay,
    sum(case when partnerId = 'AmazonApi' then 1 else 0 end) amazon
from LogFilesv2_Dataset.FR_Clickstats_v2
group by date_trun(dt, month), keywordName
© www.soinside.com 2019 - 2024. All rights reserved.