2012-02-16 94 views
1

我在mySQL和MSSQL上相當精通,但我只是開始使用postgres。我敢肯定,這是一個簡單的問題,所以要簡短:正確的GROUP BY語法

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_datetimestamp with time zone,我也得到了相同的結果,如果我用GROUP BY date(open_date)

我試過了postgres文檔和一些在線的例子,但似乎都表明這應該是有效的。

回答

5

問題出在ORDER BY條款中的簡陋的open_date

這應做到:

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; 
+0

是的,我不能相信我沒有意識到這一點。 > _ < – Sammitch 2012-02-16 19:16:04

+1

嘿,別擔心;它發生在我們所有人身上。我們拿起並繼續處理更大更好的錯誤:D – bernie 2012-02-16 19:21:57

1

「open_date」不你的選擇清單「date(open_date)」是。

這些要麼將工作:

按日期(open_date)

順序由1

您也可以命名在SELECT語句中的列,然後參考別名:

select date(open_date)「別名」...別名順序

某些數據庫在您選擇的別名之前需要關鍵字AS。