sql >> Databasteknik >  >> RDS >> Oracle

SQL är inte ett GROUP BY-uttryck med OracleSQL och InnerQuery Error

Som du kan se i ORACLE-dokumenten

Det betyder att om du bara grupperar efter o.CUSTOMER_ID , måste alla andra fält i urvalslistan vara aggregerade funktioner (som COUNT, MAX, etc.).

I fallet med fält som upprepar värden i varje grupp (som namn och efternamn) bör du inkludera dem i GORUP BY-satsen.

För att inkludera summan av spenderade pengar kan du lägga till ytterligare en LEFT JOIN med PRODUKTER och välja SUM(op.amount*p.price) utan en underfråga.

Det skulle vara

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;

Kom ihåg att alltid definiera sorteringsordningen för dina frågor, annars blir den odefinierad.




  1. PyCharm importera MySQL

  2. Hur man spårar sidvisningar utan att slå MySQL DB

  3. PostgreSQL:INTE IN kontra UTOM prestandaskillnad (redigerad #2)

  4. Lägg till dynamisk data till linjediagram från mysql-databas med highcharts