sql按条件分组查询后,如何在最底下加上一个总数

 编写一个查询显示员工总数以及其中在2004年、2005年、2006年和2007年聘用的员工数。

数据库为hr.employees,里面有每个员工的编号employee_id,入职日期hire_date

这是我写的:

select to_char(hire_date,'yyyy') "年份",count(employee_id) "雇佣员工数" from hr.employees group by to_char(hire_date,'yyyy') having to_char(hire_date,'yyyy') in ('2004','2005','2006','2007') order by "年份";

运行结果如下

但我的目标输出结果应该是这样:

我的结果少了最后一行的总数,请问该怎么修改我的语句以达到目标

1、业务层做统计

2、sql使用union把总数sql链接在一起,感觉没必要,数据复杂会费时间。

1.这个总数可以在业务层中计算,也可以在前端计算得出,没必要在数据层做

2.数据层就做最原始的事,返回数据即可,尽量不要有太多的数据过滤

3.如果非要用sql完成,对分组完之后的数据求和即可,相信你会

4.如果你想sql查询出的结果,跟你那个图片上的一模一样,参考1

oracle 用union all 拼上一个总查询就行了

如下:

select to_char(hire_date,'yyyy') "年份",count(employee_id) "雇佣员工数" 
from hr.employees 
group by to_char(hire_date,'yyyy') asc with rollup 
having to_char(hire_date,'yyyy') in ('2004','2005','2006','2007');