postgres(redshift)查询包括to_char和group by返回一些错误

时间:2014-09-17 11:55:02

标签: amazon-redshift

我现在正在使用红移。 然后我喜欢运行像

这样的查询
SELECT to_char(created_at, 'HH24') AS hour , to_char(created_at, 'YYYY-MM-DD HH24') AS tmp FROM log GROUP BY tmp;

这会返回错误,当我在mysql中执行它时,它似乎很好。 这个错误是

ERROR:  column "log.created_at" must appear in the GROUP BY clause or be used in an aggregate function

当我像“group by created_at”这样更改group by子句时,它返回结果,但它有重复的列表。

是由于红移?

1 个答案:

答案 0 :(得分:0)

如果您使用的是GROUP BY子句,则查询中的任何列都必须出现在子句中,或者您必须指定聚合的方式。

在您的情况下,您似乎试图按小时汇总log条目。我建议使用postgres日期操作函数,例如:

  SELECT created_at::date AS date, 
         extract('HOUR' FROM created_at) as hour 
    FROM log 
GROUP BY date, hour;