Như bạn có thể thấy trong tài liệu ORACLE
Điều này có nghĩa là nếu bạn chỉ nhóm theo o.CUSTOMER_ID
, tất cả các trường khác trong danh sách chọn phải là các hàm tổng hợp (như COUNT, MAX, v.v.).
Trong trường hợp các trường lặp lại giá trị trong mỗi nhóm (như tên và họ), bạn nên đưa chúng vào mệnh đề GORUP BY.
Để bao gồm tổng số tiền đã chi tiêu, bạn có thể thêm THAM GIA TRÁI khác với SẢN PHẨM và chọn SUM(op.amount*p.price)
không có truy vấn con.
Đó sẽ là
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;
Hãy nhớ luôn xác định thứ tự sắp xếp của các truy vấn của bạn, nếu không nó sẽ không được xác định.