我正在尝试在Google BigQuery上运行以下查询:
SELECT SUM(var1) AS Revenue
FROM [table1]
WHERE timeStamp = (SELECT MAX(timeStamp) FROM [table1])
我收到以下错误:
错误:在第3行第19栏遇到“”。期待以下之一:
BigQuery不支持这个吗?如果是这样,会有优雅的选择吗?
答案 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个。