【发布时间】:2015-02-16 19:11:12
【问题描述】:
我正在尝试创建一些 SQL 来计算每个公司内的员工人数,并只返回那些员工人数大于或等于 n 的公司。
我有以下表格(简体):
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.
任何帮助或建议将不胜感激!
【问题讨论】:
-
“不起作用”是什么意思?
-
我已更新问题以包含错误。
标签: sql sql-server count distinct