Domanda

Sto cercando di eseguire la seguente query su Google BigQuery:

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

Sto ottenendo il seguente errore:

Errore: incontrato "" Alla linea 3, colonna 19. Aspettava uno dei seguenti:

Questo non è supportato in BigQuery?Se è così, ci sarà un'alternativa elegante?

È stato utile?

Soluzione

Sottoseselect in un predicato di confronto non è supportato, ma è possibile utilizzare in.

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

Altri suggerimenti

Userei il rango () per ottenere il timestamp max e filtrare i # 1s nella clausola WHERE.

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

Non so come funziona con BQ, ma in altre tecnologie DB sarebbe più efficiente in quanto comporta solo una scansione da tavolo singola anziché 2.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top