在ViewALL视图中,按部门统计各部门人数及平均年龄,包括部门名称、人数和平均年龄

在ViewALL视图中,按部门统计各部门人数及平均年龄,包括部门名称、人数和平均年龄。

img

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    对于该问题,可以按照以下步骤进行优化:

    1.在view_info视图的基础上,使用group by对部门进行分组,并统计人数和平均年龄,得到一个新的视图view_dept:

    create view view_dept as 
    select wsn as dept_name, count(*) as num_people, avg(age) as avg_age
    from (
        select wk.name, wk.age, ws.name as wsn
        from zhongjinlin_worker wk 
        right join zhongjinlin_workshop ws on
        wk.shop_no = ws.no
    ) info
    group by wsn;
    

    其中,age是员工的年龄,需要在原view_info中进行修改。

    2.在view_dept视图基础上,使用join与原来的view_info视图进行联接,得到最终的视图view_all:

    create view view_all as
    select di.dept_name, di.num_people, di.avg_age, vi.name, vi.phone, vi.address, vi.wsp as director_name, vi.wsp as director_phone
    from view_dept di
    left join (
        select wk.name, wk.age, wk.phone, ws.address, ws.name wsn, ws.phone wsp
        from zhongjinlin_worker wk 
        right join zhongjinlin_workshop ws on
        wk.shop_no = ws.no
    ) vi on di.dept_name=vi.wsn;
    

    其中,使用left join而不是inner join,是因为有可能存在一个部门没有员工的情况,使用left join可以将这个部门的信息也包括在内。

    整个优化过程中,需要进行适当的修改和调整,比如涉及到具体表的名称、字段的名称和数据类型等。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^