我想創建一個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. –