zoukankan      html  css  js  c++  java
  • 动力节点试题练习26题

    26.列出在每个部门工作的员工数量、平均工资和平均服务期限

    1 select 
    2 e.deptno,
    3 count(e.ename)as"员工数量", 
    4 avg(e.sal) as avgsal,
    5 ((avg(to_days(now())-to_days(e.hiredate)))/365)
    6 from emp e
    7 group by deptno

    以上为错误解法
    ---------------------------------------------------------------------------
    第一步 求出每个部门对应的所有员工,这里使用了右连接,保证显示所有的部门,但是有的部门不存在员工,但是也必须把所有的部门显示出来,将员工表与部门表进行右连接,将信息全部显示

    select 
    e.*,d.*
    from 
    emp e
    right join 
    dept d
    on e.deptno=d.deptno;

    第二步 在此基础上列出每个部门工作的员工数量

    select 
    d.deptno,count(e.ename)
    from 
    emp e
    right join 
    dept d
    on e.deptno=d.deptno
    group by 
    d.deptno;


    第三步,在以上基础上,列出每个员工的平均工资

    select 
    d.deptno,count(e.ename),ifnull(avg(e.sal),0)as avgsal
    from 
    emp e
    right join 
    dept d
    on e.deptno=d.deptno
    group by 
    d.deptno;

    第四步,在以上基础上,列出没个员工的平均服务期限
    1)to_days()函数,计算出天数

    select to_days(now());


    换算为年数

    select to_days(now())/365


    2)计算员工在公司的服务期限

    select (to_days(now())-to_days(hiredate))/365 as servertime
    from emp;


    整体语句

    select 
    d.deptno,
    count(e.ename) as totalemp,
    ifnull(avg(e.sal),0)as avgsal,
    avg(ifnull((to_days(now())-to_days(hiredate))/365,0)) as avgservertime
    from 
    emp e
    right join 
    dept d
    on e.deptno=d.deptno
    group by 
    d.deptno;
  • 相关阅读:
    firstResponder
    形而上学
    du -h
    数据本地存贮与数据结构(对象)
    RFC
    oc语言源代码
    HTTP1.1协议中文版-RFC2616
    如何提高团队协作的效率
    iOS应用架构谈 开篇
    nginx版本如何选择?
  • 原文地址:https://www.cnblogs.com/lsswudi/p/10946864.html
Copyright © 2011-2022 走看看