SQl服务器查询多个聚合列

cra*_*hie 0 sql sql-server

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

QRY

基本上它是按部门,种族,性别分组

SUM(employees_of_race_by_gender),Sum(employees_Of_Dept).
Run Code Online (Sandbox Code Playgroud)

我可以获得前四列的数据,获得该部门的员工总数变得困难.你能帮我写一下这个问题吗?

所有这些细节都在同一张表中.Emp的列是Emp_Number,Race_Name,Gender,Dept

gbn*_*gbn 6

你的"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)