您好我是新编写的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
答案 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
你可以尝试一下,让我知道它是否有效..