J'ai 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 requête ci-dessus, correspond à la réponse par ExactaBox -
select loc.LocationID, count(emp.EmpID) -- ne pas utiliser count(*), je ne veux pas compter les valeurs 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'ai cette erreur. Tout ce que je veux faire est de joindre les tables et ensuite regrouper tous les employés dans un emplacement particulier ensemble.
Je pense avoir une explication partielle pour ma propre question. Dites-moi si c'est correct -
Pour grouper tous les employés qui travaillent dans le même emplacement, nous devons d'abord mentionner l'ID de l'emplacement.
Ensuite, nous ne pouvons pas/ne mentionnons pas chaque ID d'employé à côté. Au lieu de cela, nous mentionnons le nombre total d'employés dans cet emplacement, c'est-à-dire que nous devrions utiliser SUM() des employés travaillant dans cet emplacement. Pourquoi le faisons-nous de cette manière-là, 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 l'erreur concernant la clause GROUP BY
?
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 regrouper des colonnes; l'ordonnancement trie le résultat.