जैसा कि आप ORACLE डॉक्स में देख सकते हैं।
इसका मतलब है कि अगर आप केवल o.CUSTOMER_ID
. के आधार पर समूह बनाते हैं , चयन सूची में अन्य सभी फ़ील्ड समग्र कार्य (जैसे COUNT, MAX, आदि) होने चाहिए।
फ़ील्ड के मामले में जो प्रत्येक समूह (नाम और उपनाम के रूप में) में मूल्यों को दोहराते हैं, आपको उन्हें GORUP BY क्लॉज में शामिल करना चाहिए।
खर्च की गई राशि को शामिल करने के लिए, आप उत्पादों के साथ एक और LEFT JOIN जोड़ सकते हैं और SUM(op.amount*p.price)
चुन सकते हैं। बिना सबक्वेरी के।
वह होगा
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;
हमेशा याद रखें कि अपने प्रश्नों के क्रमबद्ध क्रम को परिभाषित करें, अन्यथा यह अपरिभाषित हो जाएगा।