我需要在sql server中写一个查询来获取这样的数据.

基本上它是按部门,种族,性别分组
SUM(employees_of_race_by_gender),Sum(employees_Of_Dept).
Run Code Online (Sandbox Code Playgroud)
我可以获得前四列的数据,获得该部门的员工总数变得困难.你能帮我写一下这个问题吗?
所有这些细节都在同一张表中.Emp的列是Emp_Number,Race_Name,Gender,Dept
你的"num_of_emp_in_race"实际上也属于性别
SELECT DISTINCT
Dept,
Race_name,
Gender,
COUNT(*) OVER (PARTITION BY Dept, Race_name, Gender) AS num_of_emp_in_race,
COUNT(*) OVER (PARTITION BY Dept) AS num_of_emp_dept
FROM
MyTable
Run Code Online (Sandbox Code Playgroud)
你应该有这个
COUNT(*) OVER (PARTITION BY Dept, Gender) AS PerDeptRace
COUNT(*) OVER (PARTITION BY Dept, Race_name) AS PerDeptGender,
COUNT(*) OVER (PARTITION BY Dept, Race_name, Gender) AS PerDeptRaceGender,
COUNT(*) OVER (PARTITION BY Dept) AS PerDept
Run Code Online (Sandbox Code Playgroud)
编辑:DISTINCT似乎在COUNT之前应用(基于此会奇怪),所以请尝试这样做
SELECT DISTINCT
*
FROM
(
SELECT
Dept,
Race_name,
Gender,
COUNT(*) OVER (PARTITION BY Dept, Race_name, Gender) AS num_of_emp_in_race,
COUNT(*) OVER (PARTITION BY Dept) AS num_of_emp_dept
FROM
MyTable
) foo
Run Code Online (Sandbox Code Playgroud)