Oracle
 sql >> база данни >  >> RDS >> Oracle

SQL не е израз GROUP BY с OracleSQL и InnerQuery Error

Както можете да видите в документите на 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;

Не забравяйте винаги да определяте реда на сортиране на вашите заявки, в противен случай той ще бъде недефиниран.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Защо статичният ddl не е разрешен в PL/SQL?

  2. Как да свържете Oracle Database към проект на Visual Studio C#

  3. Как да получа текстово съдържание от BLOB в Oracle SQL

  4. Oracle :изберете максимална стойност от различни колони на същия ред

  5. Композитен ключ за сравнение