Search code examples
sqlsummaxsql-server-2019

SQL MAX((SUM)) combined usage


I have two tables:

EMPLOYEE: ID|DEPARTMENT_ID|CHIEF_ID|NAME|SALARY

DEPARTMENT: ID|NAME

The task here is to get list of departments with total max salary of all employees.

The query I'm trying to use (completes with no results):

SELECT s.DEPARTMENT_ID, s.SALARY_SUM
 
FROM (SELECT DEPARTMENT_ID, SUM(SALARY) SALARY_SUM, w.ID
 
      FROM EMPLOYEE e
 
      JOIN DEPARTMENT w ON  w.ID = e.DEPARTMENT_ID 

      GROUP BY e.DEPARTMENT_ID, w.ID) s

WHERE s.SALARY_SUM = (SELECT MAX(SALARY) MaxSum

                    FROM EMPLOYEE w1 

                    WHERE  w1.ID = s.ID)

Solution

  • This will get you all the Deoatnent that have the highest Sum from their employees

    CREATE tABLe EMPLOYEE(DEPARTMENT_ID INT, SALARY INT)
    GO
    
    CREATE TABLe DEPARTMENT(ID int)
    GO
    
    WITH CTE as (SELECT DEPARTMENT_ID, SUM(SALARY) SALARY_SUM, w.ID
     
          FROM EMPLOYEE e
     
          JOIN DEPARTMENT w ON  w.ID = e.DEPARTMENT_ID 
    
          GROUP BY e.DEPARTMENT_ID, w.ID)
         
    SELECT s.DEPARTMENT_ID, s.SALARY_SUM
     
    FROM CTE s
    
    WHERE s.SALARY_SUM = (SELECT MAX(SALARY_SUM) MaxSum
    
                        FROM CTE w1 )
    GO
    
    DEPARTMENT_ID | SALARY_SUM
    ------------: | ---------:
    

    db<>fiddle here