实际解决方案与我的解决方案有什么区别?

时间:2020-04-03 10:23:04

标签: mysql sql

我是SQL新手。谁能告诉我实际解决方案与我的解决方案有什么区别?

模式:1

问题:

从1990年开始,每年比较不同部门的男性管理者人数与女性管理者人数。

实际解决方案的输出:

2

解决方案出现的错误:

字段列表中的未知列“ 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;

0 个答案:

没有答案