Получить условия соответствия строк в одном столбце - PullRequest
0 голосов
/ 11 июля 2019

У меня есть таблица "Product", как в BigQuery, как показано на изображении product.png введите описание изображения здесь

Вопрос: Я хочу получить информацию обо всех клиентах, имеющих продукт 'mac'и все остальные продукты.т. е. у клиента должен быть продукт 'mac'

Таким образом, в основном у трех клиентов есть mac - phil, sam, ross

Требуется таблица вывода, как показано в изображении outputrequired.png введите описание изображенияздесь

Я попробовал два стандартных SQL-кода BigQuery, как указано ниже

1) выберите * FROM tablename, где продукт похож на "% mac" и продукт похож на "% windows" 2)выберите a.custname в качестве custa, a.product в качестве prd_a, a.price в качестве price1, a.buydate в качестве buydate_A, a.price2 в качестве price_2 FROM tablename A, tablename B, где a.product похож на «% mac» иb.product наподобие "% windows"

Запрос-1: не выводит никаких данных. Запрос-2: Выводит 27 строк, как показано на рисунке: query2output.png введите описание изображения здесь

Может кто-нибудь помочь, пожалуйста?

1 Ответ

1 голос
/ 11 июля 2019

Ниже для BigQuery Standard SQL

#standardSQL
SELECT *
FROM `project.dataset.table` 
WHERE custname IN (SELECT DISTINCT custname FROM `project.dataset.table` WHERE product = 'mac') 
AND product IN ('mac', 'windows')    

Другой - причудливый - способ достижения того же

#standardSQL
SELECT * FROM UNNEST((
  SELECT ARRAY_AGG(t) FROM `project.dataset.table` t
  GROUP BY custname HAVING COUNTIF(product = 'mac') > 0
))
WHERE product IN ('mac', 'windows')  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...