zoukankan      html  css  js  c++  java
  • 曾经很长时间不会写的两个SQL语句(group by,having)

    1、统计各部门的平均工资,平均资金(要求同时显示出部门名称,部门编号,部门总人数)

    SQL> SELECT DNAME 部门名称,D.DEPTNO 部门编号,COUNT(ENAME) 部门总人数,ROUND(AVG(NVL(SAL,0)),2) 部门平均工资,ROUND(AVG(NVL(COMM,0)),1) 部门平均资金 
    FROM EMP E RIGHT JOIN DEPT D
    ON E.DEPTNO=D.DEPTNO
    GROUP BY DNAME,D.DEPTNO
    ORDER BY D.DEPTNO;
    部门名称 部门编号 部门总人数 部门平均工资 部门平均资金
    -------------- ---------- ---------- ------------ ------------ ACCOUNTING 10 3 2916.67 0 RESEARCH 20 5 2175 0 SALES 30 6 1566.67 366.7 OPERATIONS 40 0 0 0

    2、同上,只显示部门编号为10,20,30的信息

    SQL> SELECT DNAME 部门名称,D.DEPTNO 部门编号,COUNT(ENAME) 部门总人数,ROUND(AVG(NVL(SAL,0)),2) 部门平均工资,ROUND(AVG(NVL(COMM,0)),1) 部门平均资金 
    FROM EMP E RIGHT JOIN DEPT D
    ON E.DEPTNO=D.DEPTNO
    GROUP BY DNAME,D.DEPTNO
    HAVING D.DEPTNO IN(10,20,30)
    ORDER BY D.DEPTNO;
    部门名称 部门编号 部门总人数 部门平均工资 部门平均资金
    -------------- ---------- ---------- ------------ ------------ ACCOUNTING 10 3 2916.67 0 RESEARCH 20 5 2175 0 SALES 30 6 1566.67 366.7 SQL>

    解析:使用NVL函数处理空值,使空值为0,因为AVG函数在计算平均值时会忽略空值。使用ROUND函数来进行四舍五入。使用HAVING子句来过滤分组结果,所以having不能放在order by条件之后。同理可使用SUM、MAX、MIN函数来进行统计。

    SQL> SELECT DNAME 部门名称,D.DEPTNO 部门编号,COUNT(ENAME) 部门总人数,ROUND(AVG(NVL(SAL,0)),2) 部门平均工资,ROUND(AVG(NVL(COMM,0)),1) 
    部门平均资金,NVL(MAX(SAL),0) 最高工资,NVL(MIN(SAL),0) 最低工资,NVL(SUM(SAL),0) 部门工资总支出,NVL(MAX(COMM),0) 最高资金, NVL(MIN(COMM),0)
    最低奖金,NVL(SUM(COMM),0) 部门奖金总额 FROM EMP E RIGHT JOIN DEPT D
    ON E.DEPTNO=D.DEPTNO
    GROUP BY DNAME,D.DEPTNO
    ORDER BY D.DEPTNO;
    部门名称 部门编号 部门总人数 部门平均工资 部门平均资金 最高工资 最低工资 部门工资总支出 最高资金 最低奖金 部门奖金总额
    --------- -------- ---------- --------- ------- ------ ---------- ------- ---------- -------- ---------- ACCOUNTING 10 3 2916.67 0 5000 1300 8750 0 0 0 RESEARCH 20 5 2175 0 3000 800 10875 0 0 0 SALES 30 6 1566.67 366.7 2850 950 9400 1400 0 2200 OPERATIONS 40 0 0 0 0 0 0 0 0 0 SQL>
  • 相关阅读:
    CodeForces-786B Legacy (线段树优化建图,单源最短路)
    CodeForces-528C Data Center Drama
    CodeForces-723E One-Way Reform
    2-SAT入门
    POJ-3683 Priest John's Busiest Day (2-SAT 求任意可行方案)
    转载: 8天学通MongoDB——第一天 基础入门
    C# 非EF注册登录与EF注册登录
    Asp.Net入门(三)
    非EF分页
    sql语句错误大集合
  • 原文地址:https://www.cnblogs.com/rusking/p/4154418.html
Copyright © 2011-2022 走看看