我是SQL新手。谁能告诉我实际解决方案与我的解决方案有什么区别?
问题:
从1990年开始,每年比较不同部门的男性管理者人数与女性管理者人数。
实际解决方案的输出:
解决方案出现的错误:
字段列表中的未知列“ calendar_year”
/* This is the actual solution */
SELECT
d.dept_name,
ee.gender,
dm.emp_no,
dm.from_date,
dm.to_date,
e.calendar_year,
CASE
WHEN YEAR(dm.to_date) >= e.calendar_year AND YEAR(dm.from_date) <= e.calendar_year THEN 1
ELSE 0
END AS active
FROM
(SELECT
YEAR(hire_date) AS calendar_year
FROM
t_employees
GROUP BY calendar_year) e
CROSS JOIN
t_dept_manager dm
JOIN
t_departments d ON dm.dept_no = d.dept_no
JOIN
t_employees ee ON dm.emp_no = ee.emp_no
ORDER BY dm.emp_no, calendar_year;
/* This is my solution */
SELECT
d.dept_name,
ee.gender,
dm.emp_no,
dm.from_date,
dm.to_date,
YEAR(e.hire_date) AS calendar_year,
CASE
WHEN
YEAR(dm.to_date) >= calendar_year
AND YEAR(dm.from_date) <= calendar_year
THEN
1
ELSE 0
END AS active
FROM
t_employees e
CROSS JOIN
t_dept_manager dm
JOIN
t_departments d ON dm.dept_no = d.dept_no
JOIN
t_employees ee ON dm.emp_no = ee.emp_no
ORDER BY dm.emp_no , calendar_year;