Przyczyna dla kolumny jest nieprawidłowa na liście wyboru, ponieważ nie jest zawarta ani w funkcji agregującej, ani w klauzuli GROUP BY [duplikat]

Możliwy duplikat:
GRUPOWANIE BY / zagmatwanie funkcji w SQL

Mam błąd -

Kolumna „Employee.EmpID” jest niepoprawna na liście wyboru, ponieważ nie jest zawarta ani w funkcji agregującej, ani w klauzuli 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 

Ta sytuacja wpisuje się w odpowiedź Billa Karwina.

poprawka na powyższe, pasuje do odpowiedzi ExactaBox -

select loc.LocationID, count(emp.EmpID) -- not count(*), don't want to count nulls
from Employee as emp full join Location as loc 
on emp.LocationID = loc.LocationID
group by loc.LocationID 

PYTANIA ORYGINALNE -

Dla zapytania SQL -

select *
from Employee as emp full join Location as loc 
on emp.LocationID = loc.LocationID
group by (loc.LocationID)

Nie rozumiem, dlaczego dostaję ten błąd. Wszystko, co chcę zrobić, to dołączyć do tabel, a następnie zgrupować wszystkich pracowników w określonej lokalizacji.

Myślę, że mam częściowe wyjaśnienie dla mojego pytania. Powiedz mi, czy to w porządku -

Aby zgrupować wszystkich pracowników, którzy pracują w tej samej lokalizacji, musimy najpierw wspomnieć o identyfikatorze lokalizacji.

Następnie nie możemy / nie wymienimy każdego identyfikatora pracownika obok niego. Mówimy raczej o całkowitej liczbie pracowników w tej lokalizacji, tzn. Powinniśmy SUM () pracowników pracujących w tej lokalizacji. Dlaczego robimy to w ten sposób, nie jestem pewien. Wyjaśnia to, że część błędu nie jest zawarta ani w funkcji agregującej.

Jakie jest wyjaśnienieGROUP BY klauzula część błędu?

questionAnswers(4)

yourAnswerToTheQuestion