BigQuery Group By和If表达式

时间:2016-12-14 20:58:43

标签: google-bigquery

我在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中会产生完全不同的结果,因为它会按时间戳级别对其进行分组,这不是我需要的。

关于如何实现我想要的结果的任何想法?

谢谢!

1 个答案:

答案 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