mysql中2列的月和年订单

mysql中2列的月和年订单,mysql,sql,date,Mysql,Sql,Date,员工表如下所示 Name DOJ DOL ............ ............... ............ Ram 2014-01-12 2014-02-12 Kiran 2014-02-05 2014-07-05 Jhon 2014-01-25 2014-10-01

员工表如下所示

    Name          DOJ                  DOL
 ............   ...............      ............
    Ram            2014-01-12          2014-02-12
    Kiran          2014-02-05          2014-07-05
    Jhon           2014-01-25          2014-10-01
预期产出是

    Month          Joining_count     Leaving_count
  ...........     ................  .................
   Jan-2014              2                 0
   Feb-2014              1                 1
      .                  .                 .
      .                  .                 .
      .                  .                 .
我尝试了以下Mysql查询,但无法获得预期的输出 请帮帮我

        SELECT monthname(current_date) as month, 

        count( `DATE_OF_JOINING`)  as 'Joining_count' , 
        count( `DATE_OF_LEAVING`)  as 'leaving_count' , 

        group by year(`DATE_OF_JOINING`),month('DATE_OF_JOINING`),
        year(`DATE_OF_LEAVING),month(`DATE_OF_LEAVING)

您正在对同一数据执行两个不同的聚合-因此需要两个聚合查询
join
ed。 不幸的是,没有一个完整的外部连接,所以处理有人离开但没有人加入的月份和有人加入但没有人离开的月份都有点麻烦。我通过三个连接解决了这个问题——一个查询获取所有可能的日期,另外两个查询用于每个聚合


基本上,您需要两个查询,一个用于分组加入日期,另一个用于离开日期。您可以使用
UNION ALL
组合这两个结果,并将组合结果视为一个新表,然后选择(和
SUM
)值

SELECT 
  s.month, 
  SUM(s.Joining_count) AS Joining_count, 
  SUM(s.Leaving_count) AS Leaving_count
FROM
  (
   SELECT 
     DATE_FORMAT(doj, '%b-%y') as `month`, 
     COUNT(ej.doj)  as 'Joining_count',
     0 AS 'Leaving_count'
   FROM employee ej
     GROUP BY `month`

   UNION ALL

   SELECT 
     DATE_FORMAT(dol, '%b-%y') as `month`, 
     0  as 'Joining_count',
     COUNT(el.dol)  as 'Leaving_count'  
   FROM employee el
     GROUP BY `month`
  ) s
GROUP BY s.`month`;
输出将是

month       Joining_count   Leaving_count
---------------------------------------------
Feb-2014    1               1
Jan-2014    2               0
Jul-2014    0               1
Oct-2014    0               1
month       Joining_count   Leaving_count
---------------------------------------------
Feb-2014    1               1
Jan-2014    2               0
Jul-2014    0               1
Oct-2014    0               1