我正在尝试创建一个返回企业名称的 SQL 查询。员工是团队和团体的成员,团队和团体是企业的成员。
我需要选择具有作为团队成员的员工的业务,该团队整体具有某些属性。
如何编写 SQL 以返回成员与高级成员比率为 % 的企业?前 A 队 100 名团队成员中只有 20 名高级员工;所以它失败了,应该返回团队 A 所属的业务。
我知道我需要根据他们的团队将员工分组在一起,但不知何故需要计算 SENIOR=YES 与 SENIOR=NO 的员工并返回他们所属的业务。想法?
它们是包含一些敏感信息的 MS Access 表,但您可以将这些表视为如下设置:
tblBusiness:BID、BName
tblTeam:TID、TName、TBusRef
tblEmployee:EID、EName、ETeamRef、EBusRef、ESenior
我确实尝试过各种 SQL:我已经完成了从嵌套 SQL 到重聚合到包含 count 的表达式的所有操作。我得到的最接近的(我认为)是:
SELECT tblBuisiness.BName FROM tblBuisiness
GROUP BY BName HAVING (
COUNT(SELECT DISTINCT tblEmployee.ETeamRef FROM tblEmployee WHERE ESenior=-1)
/
COUNT(SELECT DISTINCT tblEmployee.ETeamRef FROM tblEmployee)
< 0.5
)
现在这个可能有语法错误(在剪贴板上),但我经历了 100 次,我得到的最接近的是“不能在 agregate "COUNT()/<0.5" 中有表达式”
如果 Business1 的 TeamA 有 20 名高级成员和 80 名普通成员,则此查询返回 Business1。