Я сделал полное соединение, но не могу получить значения, которые никогда не совпадают - SQL / BigQuery - PullRequest
0 голосов
/ 21 февраля 2019

Мне нравятся эти две таблицы:

  • Таблица 1 для кампаний в некоторых магазинах
  • Таблица 2 для количества посетителей различных магазинов (включая или не включенные в таблицы).1).

Итак, я сделал полное объединение, так как проект просит меня сделать так, чтобы я мог легко и быстро получить разные таблицы позже.

Вот структура таблицы (полное соединение, которое я использовал):

SELECT
  F.date AS Campaign_Date,
  F.Store AS AS Campaign_Store,
  F.IMPRESSIONS,
  F.CLICKS,
  F.SPEND,
  C.Date AS visitors_Date,
  C.ANNEE_MOIS,
  C.ANNEE,
  C.MOIS,
  C.Store AS visitors_Store,
  C.FREQUENTATION_Store
FROM
  `project.campaigns`  F
FULL JOIN
  `proiject.visitors` C
ON (
  C.Store= F.Store
  AND C.Date =F.date
  )

В любом случае, я хочу получить значения (имена хранилищ) двух таблиц, которые никогда не совпадают, я хочунапример, чтобы получить все магазины, которые никогда не проводили кампанию, но у меня есть данные о их посетителях.

Я изо всех сил, поэтому я сделал запрос, который возвращает мне магазины, которые не проводили кампанию на определенную дату, но не НИКОГДА!Я хочу, чтобы те, кто никогда не проводил кампанию!

    SELECT
      DISTINCT Stores_Name,
      Stores_Frequency,
      Stores_Frequency_Date
    FROM
      `projet.camp_freq_full_join_table`
    WHERE
      Campaign_Date IS NULL

Это фактически перенастраивает меня во все магазины, в которых какое-то время не проводились кампании, не никогда!

После этого я будуНужно добавить новый логический столбец WITH_CAMPAIGN, в котором говорится, что этот центр когда-либо совершал кампанию или нет (true, если хотя бы один магазин проводил одну кампанию, false, если никогда не проводил кампанию)!Есть идеи, как мне это сделать?

Спасибо большое!

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Для тех, кто однажды получил эту борьбу, вот решение, которое я попробовал, и оно сработало:

SELECT
  visitors_Store,
FROM
      `projet.camp_freq_full_join_table`
WHERE
  (FRQ_ENS NOT IN (
    SELECT
      Campaign_Store
    FROM
      `projet.camp_freq_full_join_table`
    WHERE
      FB_ENS IS NOT NULL))
0 голосов
/ 21 февраля 2019

Если вы хотите магазины, которые находятся в одной таблице, но не в другой, то вы можете сделать:

select store, sum(in_campaigns), sum(in_visitors)
from ((select distinct store, 1 as in_campaigns, 0 as in_visitors
       from campaigns
      ) union all
      (select distinct store, 0 as in_campaigns, 1 as in_visitors
       from visitors
      )
     ) s
group by store
having sum(in_campaigns) = 0 or
       sum(in_visitors) = 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...