获取单列中符合条件的行

时间:2019-07-11 15:30:59

标签: google-bigquery

我有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

有人可以帮忙吗?

1 个答案:

答案 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')