我在BigQuery中合理化某些东西时遇到了麻烦。基本上我在使用StandardSQL时遇到整个组的问题。我有以下查询:
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中会产生完全不同的结果,因为它会按时间戳级别对其进行分组,这不是我需要的。
关于如何实现我想要的结果的任何想法?
谢谢!
答案 0 :(得分: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