0

J'essaie de compter les voyages auxquels les médecins sont allés et de calculer le coût total des péages. J'utilise ORACLE XE 11g et SQL Developer. J'ai essayé de le faire avec SELECT dans corrélative sous-requête, mais je reçois ce message:Sous-requête corrélée Oracle SQL: pas une fonction de groupe à un seul groupe

ORA-00937: not a single-group group function 
00937. 00000 - "not a single-group group function" 
*Cause:  
*Action: 
Error at Line: 2 Column: 11 

Ceci est question j'ai parlé:

SELECT person.name, person.surname, COUNT(DISTINCT travelID) AS numberoftravels, 
    (SELECT SUM(costs.cost) FROM costs 
    JOIN travel ON costs.travelID = travel.travelID 
    JOIN person ON travel.personID = person.personID 
    JOIN staff ON travel.personID = staff.staffID 
    WHERE stafftype = 'Doctor' AND costtype = 'tolls' and staff1.staffID = person.personID 
) AS tollscost 

FROM travel JOIN person ON person.personID = travel.personID 
    JOIN staff staff1 ON staff1.staffID = person.personID 

WHERE stafftype = 'Doctor' 
GROUP BY person.name, person.surname; 

Le comptage a travaillé très bien avant que j'ajouté sous-requête. Est-ce que quelqu'un comprend pourquoi je pourrais avoir ce problème?

+0

déplacez simplement la sous-requête en tant qu'expression jointe à la place. C'est aussi beaucoup plus correct – Sebas

Répondre

0

Il vous manque une colonne GROUP BY - personID

+0

Merci beaucoup. Rétrospectivement, c'était une question de noob, je ne savais pas que je devais commander par autre chose que les attributs qui sont dans SELECT sauf les agrégats – pesoodeen