Average Salary: Departments VS Company

hard database sql

Problem

salary(id, employee_id, amount, pay_date) and employee(id, department_id). Per (pay_month, department), label avg dept salary as higher/lower/same vs company avg that month.

Inputsal=[(1,1,9000,'2017-03-31'),(2,2,6000,'2017-03-31')] emp=[(1,1),(2,2)]
Output[('2017-03',1,'higher'),('2017-03',2,'lower')]
Company avg in March is 7500; dept 1 (9000) is higher, dept 2 (6000) is lower.

SELECT pay_month, department_id,
  CASE WHEN AVG(amount) > c.avg_amt THEN 'higher'
       WHEN AVG(amount) < c.avg_amt THEN 'lower'
       ELSE 'same' END AS comparison
FROM (...) /* join with company monthly avg */
GROUP BY pay_month, department_id;
Time: O(n) Space: O(n)