Выберите два разных столбца в большом запросе на основе значения третьего столбца - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть некоторые данные кампании из Google Analytics, которые я хочу использовать в Bigquery с SQL.Существует два столбца измерения: кампания и содержание, а также один показатель - сеансы.Было бы просто, если бы не какой-то трафик пришел с плохим параметром кампании, и я бы в итоге получил плохо выглядящую таблицу.Теперь я хочу «сгруппировать» сеансы по одному рекламному контенту и по кампании с наибольшим количеством сеансов.

Я пробовал несколько разных вариантов, чтобы присоединиться к TOP, но это всегда с двумя разными таблицами, и я не могу заставить его работать здесь.

ТАБЛИЦА

adcontent       campaign            sessions
adcontent_1     campaign_1          57
adcontent_1     wrong_campaign_1    1
adcontent_2     campaign_2          102
adcontent_2     wrong_campaign_1    3

ТАБЛИЦА РЕЗУЛЬТАТОВ:

adcontent   campaign    sessions
adcontent_1 campaign_1  58
adcontent_2 campaign_2  105

Ответы [ 2 ]

0 голосов
/ 26 сентября 2019

Похоже, вы хотите сохранить название кампании, в которой больше всего сеансов.BigQuery не имеет «первой» функции агрегирования, но вы можете использовать:

select adcontent,
       array_agg(campaign order by sessions desc limit 1)[safe_ordinal(1)] as leading_campaign
       sum(sessions) as sessions
from t
group by adcontent;

Вот пример кода:

with t as (
      SELECT 'adcontent_1' as adcontent, 'campaign_1' as campaign, 57 as sessions union all
      SELECT 'adcontent_1', 'wrong_campaign_1', 1 union all
      SELECT 'adcontent_2', 'campaign_2', 102 union all
      SELECT 'adcontent_2', 'wrong_campaign_1', 3 UNION ALL
      SELECT 'adcontent_3', 'campaign_3', 42 union all
      SELECT 'adcontent_3', 'bad_campaign_3', 4
     )
select adcontent,
       array_agg(campaign order by sessions desc limit 1)[safe_ordinal(1)] as leading_campaign,
       sum(sessions) as sessions
from t
group by adcontent;
0 голосов
/ 26 сентября 2019

использовать агрегацию

adcontent,min(campaign),sum(sessions) from table 
group by adcontent
...