2011-04-07 55 views
1

爲什麼這項工作ORA-00979:不是GROUP BY表達式

SELECT DISTINCT FIRSTNAME, LASTNAME 
FROM books, CUSTOMERS, orders, orderitems 
WHERE STATE IN('FL ', 'GA') 
GROUP BY orders.order#, firstname, lastname 
HAVING SUM(retail*quantity) > 80 

但當firstname, lastnamegroup by刪除了沒有?

ORA-00979:不是GROUP BY表達式

+1

世界你爲什麼不有任何連接條件? – 2011-04-07 23:52:14

回答

1

firstname, lastnamegroup by移除的情況下,你得到這個錯誤,因爲你SELECT荷蘭國際集團是不是活得列(S) t在GROUP BY表達式中,或者不是聚合函數(即MIN,MAX,AVG等)的一部分。您也可以刪除DISTINCT

+0

你可能不應該刪除獨特的。在任何情況下,刪除「不同」將可以輸出。如果兩行具有相同的名字和姓氏,但是有不同的順序#,則如果清除了,則重複它們。 – redcayuga 2011-04-08 16:16:25

2

正如我可以猜到

首先GROUP BY操作的情況下進行,然後DISTINCT。在GROUP BY子句中,您必須指出所有非聚合。例如,您不得進行以下操作:

SELECT FIRST_NAME, LAST_NAME 
FROM EMPLOYEES 
GROUP BY HIRE_DATE 

你應該這樣做:

SELECT FIRST_NAME, LAST_NAME 
FROM EMPLOYEES 
GROUP BY HIRE_DATE,FIRST_NAME, LAST_NAME 
+0

幫助我瞭解。 – user490735 2011-04-14 21:39:20

相關問題