1

为什么这行得通

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 表达式

4

2 回答 2

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
于 2011-04-08T11:01:06.510 回答
1

firstname, lastname在从 中删除的情况下group by,您会收到该错误,因为您正在SELECT输入不在GROUP BY表达式中的列,或者不是聚合/函数的一部分(即 MIN、MAX、AVG 和其他)。

你也可以消除DISTINCT

于 2011-04-07T21:15:47.633 回答