В чем разница между фактическим решением и моим решением? - PullRequest
0 голосов
/ 03 апреля 2020

Я новичок в 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...