ビジネス名を返す 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 から重い集計、カウントを含む式まで、あらゆることを行いました。私が得た最も近い(私が思うに)は次のとおりです。
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回実行しましたが、最も近いものは「集計 "COUNT()/ <0.5"に式を含めることはできません」でした」
Business1 の TeamA に 20 人のシニア メンバーと 80 人のレギュラー メンバーがいる場合、このクエリは Business1 を返します。