J'ai obtenu une erreur -
La colonne 'Employee.EmpID' est invalide dans la liste de sélection car elle n'est pas contenue dans une fonction d'agrégation ou dans la clause GROUP BY.
select loc.LocationID, emp.EmpID
from Employee as emp full join Location as loc
on emp.LocationID = loc.LocationID
group by loc.LocationID
Cette situation correspond à la réponse donnée par Bill Karwin.
correction pour la question précédente, correspond à la réponse de ExactaBox -
select loc.LocationID, count(emp.EmpID) -- pas count(*), ne veut pas compter les nulls
from Employee as emp full join Location as loc
on emp.LocationID = loc.LocationID
group by loc.LocationID
QUESTION ORIGINALE -
Pour la requête SQL -
select *
from Employee as emp full join Location as loc
on emp.LocationID = loc.LocationID
group by (loc.LocationID)
Je ne comprends pas pourquoi j'obtiens cette erreur. Tout ce que je veux faire, c'est joindre les tables puis regrouper tous les employés dans un lieu particulier.
Je pense avoir une explication partielle pour ma propre question. Dites-moi si c'est correct -
Pour regrouper tous les employés travaillant dans le même lieu, nous devons d'abord mentionner LocationID.
Ensuite, nous ne pouvons/pas mentionner chaque ID d'employé à côté. Plutôt, nous mentionnons le nombre total d'employés dans ce lieu, c'est-à-dire nous devrions FAIRE LA SOMME () des employés travaillant dans ce lieu. Pourquoi faisons-nous de cette manière, je ne suis pas sûr. Cela explique donc la partie "elle n'est pas contenue dans une fonction d'agrégation" de l'erreur.
Quelle est l'explication pour la partie de la clause GROUP BY
de l'erreur ?
1 votes
Lorsque vous utilisez group by, vous devez sélectionner spécifiquement l'élément que vous regroupez.
2 votes
Vous confondez probablement
GROUP BY
avecORDER BY
. Le regroupement est utilisé pour agréger les colonnes; l'ordonnancement est le tri du résultat.