問題:查詢平均工資最低的部門信息
該問題中平均工資涉及employees表,部門信息涉及departments表,
可將該問題按步驟拆分:
①查詢每個部門的平均工資
②查詢平均工資最低的部門的平均工資
③根據平均工資最低的部門的平均工資去找平均工資最低的部門的部門編號
④根據平均工資最低的部門的部門編號去找部門信息
具體實現:
①查詢每個部門的平均工資:
SELECT avg( salary ) ag
FROM departments d
JOIN employees e
ON d.department_id = e.department_id
GROUP BY d.department_id;
②查詢平均工資最低的部門的平均工資:
SELECT min( ag )
FROM (
SELECT avg( salary ) ag
FROM departments d
JOIN employees e
ON d.department_id = e.department_id
GROUP BY d.department_id
) ag_dep; 這里必須取別名!
③根據平均工資最低的部門的平均工資去找平均工資最低的部門的部門編號:
SELECT department_id
FROM employees
GROUP BY department_id
HAVING avg( salary ) = (
SELECT min( ag )
FROM (
SELECT avg( salary ) ag
FROM departments d
JOIN employees e
ON d.department_id = e.department_id
GROUP BY d.department_id
) ag_dep
);
④根據平均工資最低的部門的部門編號去找部門信息:
SELECT *
FROM departments
WHERE department_id =(
SELECT department_id
FROM employees
GROUP BY department_id
HAVING avg( salary ) = (
SELECT min( ag )
FROM (
SELECT avg( salary ) ag
FROM departments d
JOIN employees e
ON d.department_id = e.department_id
GROUP BY d.department_id
) ag_dep
)
);