BigQuery上的WHERE子句中的SELECT语句不起作用

时间:2013-11-15 20:40:36

标签: sql google-bigquery

我正在尝试在Google BigQuery上运行以下查询:

SELECT SUM(var1) AS Revenue
FROM [table1]
WHERE timeStamp = (SELECT MAX(timeStamp) FROM [table1])

我收到以下错误:

错误:在第3行第19栏遇到“”。期待以下之一:

BigQuery不支持这个吗?如果是这样,会有优雅的选择吗?

2 个答案:

答案 0 :(得分:5)

不支持在比较谓词中进行子选择,但您可以使用IN。

SELECT SUM(var1) AS Revenue
FROM [table1]
WHERE timeStamp IN (SELECT MAX(timeStamp) FROM [table1])

答案 1 :(得分:2)

我会使用Rank()来获取最大时间戳,并过滤where子句中的#1。

select SUM(var1) AS Revenue
From
(SELECT var1 
,RANK() OVER (ORDER BY timestamp DESC) as RNK
FROM [table1]
)
where RNK=1

我不知道它如何与BQ一起工作,但在其他数据库技术中它会更有效率,因为它只涉及单个表扫描而不是2个。