group by不在postgreSQL中工作

时间:2015-06-16 11:06:29

标签: sql postgresql group-by

我想通过createdAt对我的数据进行分组,但它不起作用我不知道为什么...... 只有id对我来说是无用的。

这是有效的:

SELECT "id", "createdAt", "updatedAt" 
FROM "tables" AS "Table" 
WHERE "Table"."createdAt" 
BETWEEN '2014-04-21 20:46:25.938-04' AND '2015-04-21 20:46:25.938-04'
GROUP BY "id";

这就是我想要的,但它根本不起作用......

SELECT "createdAt", "updatedAt" 
FROM "tables" AS "Table" 
WHERE "Table"."createdAt" 
BETWEEN '2014-04-21 20:46:25.938-04' AND '2015-04-21 20:46:25.938-04' 
GROUP BY "createdAt";

我有错误:

  

错误:列" Table.updatedAt"必须出现在GROUP BY子句中   用于聚合函数

2 个答案:

答案 0 :(得分:1)

ID是唯一的,group by ID就像普通选择一样。

createdAt不是唯一的,必须对具有相同createdAt值的结果进行分组。您应该提供一种如何对它们进行分组的方法 - 使用aggreagete函数,将它们从select子句中删除或将它们添加到group by语句中。

答案 1 :(得分:0)

您只能选择聚合函数或" GROUP BY"中列出的字段。如告诉

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

您的第一个查询仅适用于" id"是您的主键,因此可以保证每个组只有一行。