Som du kan se i ORACLE-dokumenterne
Det betyder, at hvis du kun grupperer efter o.CUSTOMER_ID
, skal alle de andre felter i den valgte liste være aggregerede funktioner (såsom COUNT, MAX osv.).
I tilfælde af felter, der gentager værdier i hver gruppe (som navn og efternavn), bør du inkludere dem i GORUP BY-sætningen.
For at inkludere summen af brugte penge kan du tilføje endnu et LEFT JOIN med PRODUKTER og vælge SUM(op.amount*p.price)
uden en underforespørgsel.
Det ville være
SELECT o.CUSTOMER_ID AS "ID", c.name AS "Name", c.SURNAME AS "Surname",
SUM(op.AMOUNT*p.PRICE) AS "Money spent"
FROM ORDERS o
LEFT JOIN CUSTOMERS c ON c.ID = o.CUSTOMER_ID
LEFT JOIN ORDERS_PRODUCTS op ON op.ORDER_ID = o.id
LEFT JOIN PRODUCTS p ON p.id = op.PRODUCT_ID
GROUP BY o.CUSTOMER_ID, c.name AS "Name", c.SURNAME
ORDER BY o.CUSTOMER_ID, c.name AS "Name", c.SURNAME;
Husk altid at definere sorteringsrækkefølgen for dine forespørgsler, ellers vil den være udefineret.