我正在努力查找按日历分列的员工人数,按月分类。因此,如果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
如何在整个日历年延长此项?
答案 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)