首页 > 解决方案 > 从不相关的不同表中选择 2 个值并使用结果 BigQuery 执行操作

问题描述

我需要一些有关 Google Big Query 中 SQL 的帮助。

我有两个表,A 和 B,我需要从 A 中选择一个值,从 B 中选择一个不相关的值,然后执行数学运算。

TABLE A

NAME        |      TIMESTAMP
------------------------------
xyz         |      2013-01-02 
abcd        |      2013-01-02
efgh        |      2012-03-01

TABLE B

CAMPAING    |         DATE      | COST
-------------------------------------------
A          |      2013-01-02    |  10   
B          |      2013-01-02    |  30
C          |      2012-03-01    |  15

我设法做的事情:

SELECT (COUNT(DISTINCT NAME)
FROM `TABLE A`
WHERE DATE(TIMESTAMP) = '2013-01-02'

UNION DISTINCIT

SELECT (SUM(COST))
FROM `TABLE B`
WHERE date = '2013-01-02'

输出:

ROW |    f0_
----------------
1   |     2
2   |     40

我需要做的是将这两个值分开...... 40/2

期望的输出:

ROW |    f0_
----------------
1   |     20

任何人都可以帮助我实现这一目标吗?提前致谢!

标签: sqlgoogle-bigquery

解决方案


使用子查询:

SELECT a.cnt, b.cost, b.cost / a.cnt
FROM (SELECT (COUNT(DISTINCT NAME) as cnt
      FROM `TABLE A`
      WHERE DATE(TIMESTAMP) = '2013-01-02'
     ) a CROSS JOIN
     (SELECT SUM(COST) as cost
      FROM `TABLE B`
      WHERE date = '2013-01-02'
     ) b;

推荐阅读