Interview-Question

面試SQL問題

  • December 1, 2015

給定一個表’員工'

employee_id | salary | department_id 
-------------+--------+---------------

僅使用 SQL 查找從一個部門到另一個部門的員工調動的所有變體,因此“出發”和“到達”部門的平均工資都增長了。

PS我在一次採訪中被問到這個問題,從來沒有給出答案,Google也幫不上什麼忙。

因此,您正在尋找收入低於目前部門平均水平但高於預期新部門平均水平的員工。

獲得所有滿足此要求的員工調動的一種可能方法是

WITH departments
    AS (SELECT AVG(salary) AS AvgSalary,
               department_id
        FROM   employees
        GROUP  BY department_id)
SELECT e.employee_id,
      dept_current.department_id AS current_department_id,
      dept_new.department_id     AS new_department_id
FROM   employees e
      JOIN departments dept_current
        ON e.department_id = dept_current.department_id
           AND dept_current.AvgSalary > e.salary
      JOIN departments dept_new
        ON dept_new.AvgSalary < e.salary 

引用自:https://dba.stackexchange.com/questions/114902