繁体   English   中英

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

[英]SELECT statement in WHERE clause on BigQuery not working

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

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

我收到以下错误:

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

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

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

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

我会使用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个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM