2016-12-14 46 views
0

我在合理化BigQuery中的某些內容時遇到了問題。基本上我在使用StandardSQL時遇到了整個組的問題。我有以下查詢:BigQuery Group By和If表達式

SELECT 
    FORMAT_DATETIME('%Y-%m-%d', DATETIME(tstmp)) AS f_timestamp, 
    IF(tstmp < '2016-11-01 00:00:00', 10, 15) AS rate 
FROM 
    `table` 
GROUP BY 
    f_timestamp 

結果我想實現這個樣子的:

f_timestamp   rate  
2016-11-02   15 
2016-10-30   10 

但BigQuery埋怨tstmp場,這是在IF聲明:

SELECT list expression references column tstmp which is neither grouped nor aggregated at

將它包含在Group By中會產生完全不同的結果,因爲它將它分組到ti mestamp級別,這不是我所需要的。

關於如何實現我想要的結果的任何想法?

謝謝!

回答

1

試試下面

SELECT 
    FORMAT_DATETIME('%Y-%m-%d', DATETIME(tstmp)) AS f_timestamp, 
    MAX(IF(tstmp < '2016-11-01 00:00:00', 10, 15)) AS rate 
FROM 
    `table` 
GROUP BY 
    f_timestamp 
+0

該訣竅。乾杯! – vulkoingim