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, lastname削除されgroup 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 byMIN 、MAX、AVG、およびその他)。SELECTGROUP BY

を削除することもできDISTINCTます。

于 2011-04-07T21:15:47.633 に答える