SQL Query用于获取每个日历年加入的员工数量,每月细分

时间:2009-11-03 16:05:00

标签: sql oracle

我正在努力查找按日历分列的员工人数,按月分类。因此,如果1月份有15名员工加入,2月份加入了30名,那么我想要的输出就是

Month |  Employees
------|-----------
Jan   |      15
Feb   |      30

我想出了一个查询来获取特定月份

SELECT * FROM (
SELECT COUNT(EMP_NO), EMP_JN_DT
  FROM EMP_REG WHERE 
 EMP_JN_DT between '01-NOV-09'  AND '30-NOV-09'
GROUP BY EMP_JN_DT )
ORDER BY 2

如何在整个日历年延长此项?

4 个答案:

答案 0 :(得分:2)

SELECT   Trunc(EMP_JN_DT,'MM') Emp_Jn_Mth,
         Count(*)
FROM     EMP_REG
WHERE    EMP_JN_DT between date '2009-01-01' AND date '2009-12-31'
GROUP BY Trunc(EMP_JN_DT,'MM')
ORDER BY 1;

如果您没有任何人加入某个月,那么您将不会返回任何行。为了解决这个问题,您必须将上述内容加入到所需年份的月份列表中。

答案 1 :(得分:1)

SELECT to_date(EMP_JN_DT,'MON') "Month", EMP_NO "Employees"
FROM EMP_REG
WHERE EMP_JN_DT between date '2009-01-01' AND date '2009-12-31'
GROUP by "Month"
ORDER BY 1;

答案 2 :(得分:0)

http://www.techonthenet.com/oracle/functions/extract.php

有一个函数可以返回月份。你需要做的就是把它放在

组中

答案 3 :(得分:-1)

可以通过以下方式选择1月份的员工人数:

SELECT EXTRACT(MONTH FROM HIREDATE) AS MONTH1, COUNT(*)
FROM employee
WHERE EXTRACT(MONTH FROM HIREDATE)=1
GROUP BY EXTRACT(MONTH FROM HIREDATE)