Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL在特定年份工作的员工人数(按部门划分)_Mysql_Join - Fatal编程技术网

MYSQL在特定年份工作的员工人数(按部门划分)

MYSQL在特定年份工作的员工人数(按部门划分),mysql,join,Mysql,Join,您好,我刚刚开始编写sql查询 我想分别显示201320142015年的工人数量 我查找部门员工数量的代码是 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

您好,我刚刚开始编写sql查询
我想分别显示201320142015年的工人数量

我查找部门员工数量的代码是

     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_辞职表中,有辞职日期和日期 在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
选择d.department\u id、d.department\u name、COUNT(e.emp\u id)
作为Emp_sum_2015
来自master_员工作为内部联接
雇员在e.emp\u id=er.emp\u id上辞去er职务
内部连接主管部门d在d上部门id=e部门
其中(年份(即加入日期)=2015年或
年份(辞职日期为空)
按d.部门id、d.部门名称分组

我可以帮你在某一年完成这项工作

假设您的emp表模式为:

CREATE TABLE [dbo].[emp](
    [emp_id] [int] NOT NULL,
    [Join_date] [date] NOT NULL)
还有你的emp_辞职:

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)
选择计数(如emp\u id)作为emp\u和2015
从dbo.emp作为左外连接
dbo.emp_辞去e.emp_id=er.emp_id上的er职务
其中(年份(即加入日期)=2015年或
年份(er.辞职日期)为空)

您可以使用分组方式。我正在编辑您在问题中添加的查询:

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
选择年份(如加入日期)、部门id、部门名称、计数(如emp id)
作为Emp_sum_2015
来自master_员工作为内部联接
雇员在e.emp\u id=er.emp\u id上辞去er职务
内部连接主管部门d在d上部门id=e部门
其中(年份(即加入日期)=2015年或
年份(辞职日期为空)
按年份分组(如加入日期)、d部门id、d部门名称

你能试试看,让我知道它是否有效吗?

你的表中有日志/初始日期字段吗?试着浏览标准书籍……。日期从。。。其中,(…)组中按部门id列出的日期,date@HarikaB我在emp表中有join_date字段,在emp_DIRECT中有辞职_date字段table@ustaad它必须是1个查询?不是每年3次查询?太好了,我根据我的要求重述了你的查询,你可以在我的问题上看到,有没有办法在一次查询中找到所有三年的员工?是的,我尝试了一些细微的改变。感谢红豆杉:)如果答案解决了问题,请投赞成票。它给出了问题是否解决的想法。因为我的声望低于15,我的赞成票只记录了下来,没有显示