我想创建一个SQL查询,它返回一个商业名称。员工是团队的成员,团队,团队和团体都是企业的成员。跨表准则查询
我需要选择具有雇员的业务,这些雇员是团队的成员,它具有某些属性作为整体。
我该如何着手编写SQL以将具有成员的业务返回到高级成员比率为%?前团队A在100名团队成员中只有20名高级员工;所以它失败了,应该返回A队所属的业务。
我知道我需要根据他们的团队将员工分组在一起,但某种程度上需要计算对SENIOR = NO具有SENIOR = YES的员工并返回他们所属的业务。想法?
它们是包含一些敏感信息的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。
请出示您正在使用的表和所需的输出的examlpe。 –
请至少提供表格结构(列,样本行)。优选地,还提供失败查询的至少一个示例以展示您正在做出的努力。 –
刚才在你的例子中注意到你使用'ESenior = -1';这是否意味着“-1”而不是“1”?我会认为,如果一名员工是高级员工,那么ESenior会是1,否则非高级员工的ESenior会等于0. –