我非常精通mySQL和MSSQL,但我刚开始使用postgres。我确信这是一个简单的问题,所以要简短一点:
SQL error:
ERROR: column "incidents.open_date" must appear in the GROUP BY clause or be used in an aggregate function
In statement:
SELECT date(open_date), COUNT(*)
FROM incidents
GROUP BY 1
ORDER BY open_date
open_date
的类型为timestamp with time zone
,如果我使用GROUP BY date(open_date)
,我会得到相同的结果。
我已尝试在线浏览postgres文档和一些示例,但似乎所有内容都表明这应该是有效的。
答案 0 :(得分:5)
问题在于open_date
子句中未经修饰的ORDER BY
。
这应该这样做:
SELECT date(open_date), COUNT(*)
FROM incidents
GROUP BY date(open_date)
ORDER BY date(open_date);
这也可行(尽管出于维护原因,我不想使用整数来引用列):
SELECT date(open_date), COUNT(*)
FROM incidents
GROUP BY 1
ORDER BY 1;
答案 1 :(得分:1)
“open_date”不在您的选择列表中,“date(open_date)”是。
其中任何一个都可行:
按日期排序(open_date)
按1排序
您还可以在select语句中命名列,然后引用该别名:
选择日期(open_date)“alias”...按别名排序
某些数据库在select中的别名之前需要关键字AS。