我有BigQuery中的“ Product”表,如图片product.png enter image description here
所示。问题:我想要所有拥有产品'mac'和所有其他产品的客户的详细信息。即客户应该拥有产品“ mac”
因此,基本上有三个拥有Mac的客户-phil,sam,ross
所需的输出表,如图像outputrequired.png enter image description here
中所示我尝试了以下两个BigQuery标准SQL代码
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:不输出任何数据 Query-2:输出27行,如图所示:query2output.png enter image description here
有人可以帮忙吗?
答案 0 :(得分:1)
以下是用于BigQuery标准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')