2009-11-03 17 views
0

我試圖找到在一個日曆年加入的員工數量,按月進行細分。所以,如果15名員工曾在1月30日,2月等加入,我想輸出將是我來SQL查詢獲取在日曆年加入的員工數量,每月分解

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 

如何在完整的日曆年中擴展此功能?

回答

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
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; 
+0

啊,不是有效的Oracle語法雖然 –

+0

啊,我還在MySQL領域! *衛生署* –

-1

員工的月數可以通過以下方式進行選擇:

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