2016-12-14 91 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