. Я пытаюсь создать некоторый SQL, который будет подсчитывать количество сотрудников в каждой компании и возвращать только те компании, у которых больше или равно n
сотрудников.SQL Server. Для каждой отдельной компании подсчитывается количество сотрудников.
У меня есть следующие таблицы (упрощенный):
CompanyEmployee Table
ID Name IsCompany
1 John Joe 0
2 Company Y 1
3 Company X 1
4 Sally Jeff 0
5 James Peach 0
Employment Table
ID EmployeeID CompanyID
1 1 2
2 4 3
3 5 3
Мой желаемый результат для n=2
:
ID Name IsCompany
3 Company X 1
У меня есть следующий SQL:
SELECT t.* FROM CompanyEmployee AS t
WHERE t.ID IN (
SELECT DISTINCT (t.ID)
FROM CompanyEmployee AS t
INNER JOIN Employment AS t0 ON t.ID = t0.CompanyID
WHERE t.IsCompany = 1
GROUP BY t0.CompanyID
HAVING COUNT(t0.EmployeeID) >= n)
Но он генерирует следующее сообщение об ошибке:
Column 'CompanyEmployee.ID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Любая помощь или совет будет весьма признателен!
Что значит «не работает» означает? –
Я обновил вопрос, включив в него ошибку. – ThreadedLemon