MYSQL在特定年份部门工作的员工数量

时间:2016-08-10 06:35:06

标签: mysql join

您好我是新编写的SQL查询 我想分别显示2013,2014,2015工作人员的数量。

我的代码是在部门找到雇员的数目

     SELECT d.department_id,d.department_name,
     COUNT('e.emp_id') "number of employees"
      FROM master_department d,master_employee e
     WHERE d.department_id = e.department
      GROUP BY d.department_id,d.department_name
emp_resign表中的

有resignation_date AND 在emp表中有加入日期。 我如何比较这些日期以查找在这些特定年份工作的员工人数

代码查找特定年份的工作人员

            SELECT   d.department_id,d.department_name,COUNT(e.emp_id) 
                    AS Emp_sum_2015
                    FROM          master_employee AS e INNER JOIN
                    employee_resign AS er ON e.emp_id = er.emp_id
                    INNER JOIN  master_department d ON  d.department_id = e.department

         WHERE (YEAR(e.joining_date) <= 2015) AND (YEAR(er.date_of_resign) >= 2015 OR
                     YEAR(er.date_of_resign) IS NULL)
                     GROUP BY d.department_id,d.department_name

2 个答案:

答案 0 :(得分:0)

我可以帮助你为证明这一年做这件事。

让我们说你的emp表架构是:

CREATE TABLE [dbo].[emp](
    [emp_id] [int] NOT NULL,
    [Join_date] [date] NOT NULL)

和你的emp_resign:

CREATE TABLE [dbo].[emp_resign](
    [Resign_Id] [int] NULL,
    [emp_id] [int] NULL,
    [resignation_date] [date] NULL
)

2015年工作的员工人数可以来自此查询:

 SELECT        COUNT(e.emp_id) AS Emp_sum_2015
FROM            dbo.emp AS e LEFT OUTER JOIN
                         dbo.emp_resign AS er ON e.emp_id = er.emp_id
WHERE        (YEAR(e.Join_date) <= 2015) AND (YEAR(er.resignation_date) >= 2015 OR
                         YEAR(er.resignation_date) IS NULL)

答案 1 :(得分:0)

你可以使用group by。我正在编辑您在问题中添加的查询:

SELECT  YEAR(e.joining_date), d.department_id,d.department_name,COUNT(e.emp_id) 
                    AS Emp_sum_2015
                    FROM          master_employee AS e INNER JOIN
                    employee_resign AS er ON e.emp_id = er.emp_id
                    INNER JOIN  master_department d ON  d.department_id = e.department

         WHERE (YEAR(e.joining_date) <= 2013) AND (YEAR(er.date_of_resign) >= 2015 OR
                     YEAR(er.date_of_resign) IS NULL)
                     GROUP BY YEAR(e.joining_date),d.department_id,d.department_name

你可以尝试一下,让我知道它是否有效..