如何合并汇总结果?

时间:2019-04-27 05:49:54

标签: google-bigquery

我有两个查询:

Q#1:

SELECT
  DISTINCT Col1,
  COUNT(Col1) AS COUNT
FROM
  `dataset.W01_*`
GROUP BY
  Col1
ORDER BY
  COUNT DESC 

Q#2:

SELECT
  DISTINCT Col1,
  COUNT(Col1) AS COUNT
FROM
  `dataset.W02_*`
GROUP BY
  Col1
ORDER BY
  COUNT DESC

有结果:

Result1     
Row Col1    COUNT
1   12345   33844
2   56789   32161
3   11223   31298

Result2     
Row Col1    COUNT
1   12345   33944
2   11223   41298
3   67890   12161

我想结合查询以获取以下信息 结果:

Row Col1    COUNT
1   11223   41298
2   12345   33944
3   56789   32161
4   67890   12161

基本上在Result2中:

1)12345的数量比结果1中的数量大:33944 我希望它具有新表中的新计数。

2)Col1 = 67890是新的,我想要它的COUNT 在新表中。

因此,这两个结果将与更新的新行合并, 新计数并按COUNT降序排序。

1 个答案:

答案 0 :(得分:3)

以下是用于BigQuery标准SQL

#standardSQL
WITH result1 AS (
  SELECT Col1, COUNT(Col1) AS count
  FROM `dataset.W01_*`
  GROUP BY Col1
), result2 AS (
  SELECT Col1, COUNT(Col1) AS count
  FROM `dataset.W02_*`
  GROUP BY Col1
)
SELECT col1, GREATEST(IFNULL(t1.count, t2.count), IFNULL(t2.count, t1.count)) count
FROM result1 t1 
FULL OUTER JOIN result2 t2
USING (col1)
ORDER BY count DESC   

另外,请注意:Q1和Q2查询中不需要DISTINCT