为什么这样做
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, lastname
移除group by
时却没有?
ORA-00979:不是GROUP BY表达式
答案 0 :(得分: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
答案 1 :(得分:1)
在firstname, lastname
中删除group by
的情况下,您会收到该错误,因为您SELECT
了{{1}中不在GROUP BY
的列表达式,或者不是聚合/函数的一部分(即MIN,MAX,AVG等)。
您也可以删除DISTINCT
。