每年获取雇用了多少名员工(男性和女性)

时间:2019-02-06 10:37:15

标签: mysql sql

我正在使用datacharmer test_db数据库进行此查询。 (方案:https://cdn-images-1.medium.com/max/1200/0 * T4jknBaeaS3y0nKr.png)

我想显示每年雇用了多少名男性和女性雇员。我的意思是第一次将它们添加到部门。

这是我所拥有的查询,但是我不想显示MIN(from_date)字段,是否有更好的解决方案?

SELECT year(from_date) hired_year , COUNT(de.emp_no), MIN(from_date), gender 
FROM dept_emp de
INNER JOIN employees e
ON e.emp_no =  de.emp_no
GROUP BY gender, hired_year
ORDER BY hired_year

Dept_emp表:

emp_no  dept_no from_date   to_date
10010   d004    1996-11-24  2000-06-26
10010   d006    2000-06-26  9999-01-01
10011   d009    1990-01-22  1996-11-09
10012   d005    1992-12-18  9999-01-01
10013   d003    1985-10-20  9999-01-01
10014   d005    1993-12-29  9999-01-01

预期结果

year    count   gender
1985    10992   M
1985    7388    F
1986    12134   M
1986    8020    F
1987    12319   M
1987    8115    F
1988    12362   M
1988    8374    F

2 个答案:

答案 0 :(得分:0)

尝试一下:

SELECT year(de.from_date) hired_year , Count(*) as Count,e.gender
       FROM dept_emp de INNER JOIN 
       employees e
       ON e.emp_no =  de.emp_no
       GROUP BY hired_year,e.gender
       Order BY hired_year;

答案 1 :(得分:0)

您可能需要额外的GROUP BY

SELECT YEAR(first_date), gender, COUNT(*)
FROM (
    SELECT emp_no, MIN(from_date) AS first_date
    FROM dept_emp
    GROUP BY emp_no
) AS g
JOIN employees AS e ON g.emp_no = e.emp_no
GROUP BY YEAR(first_date), gender

但是我想如果员工在同一日期被放到部门中,您可以简单地使用hire_date