Seperti yang Anda lihat di dokumen ORACLE
Artinya jika Anda hanya mengelompokkan berdasarkan o.CUSTOMER_ID
, semua bidang lain dalam daftar pilihan harus berupa fungsi agregat (seperti COUNT, MAX, dll.).
Dalam hal bidang yang mengulang nilai di setiap grup (sebagai nama dan nama belakang), Anda harus memasukkannya ke dalam klausa GORUP BY.
Untuk memasukkan jumlah uang yang dibelanjakan, Anda dapat menambahkan KIRI GABUNG dengan PRODUK dan pilih SUM(op.amount*p.price)
tanpa subkueri.
Itu akan menjadi
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;
Ingatlah selalu untuk menentukan urutan pengurutan kueri Anda, jika tidak maka tidak akan ditentukan.