编写一个查询显示员工总数以及其中在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');