BigQuery: счетчики групп по месяцам после самостоятельного присоединения - PullRequest
0 голосов
/ 07 января 2020

У меня есть таблица, которая выглядит следующим образом:

My table

Я пытаюсь создать запрос, который покажет определенные c счетчики partnerId сгруппированы по ключевым словамName и month . Чтобы решить первую часть (без группировки по месяцам), я построил этот запрос:

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

1 Ответ

1 голос
/ 07 января 2020

Вы можете сделать это с помощью условного агрегирования:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...