zoukankan      html  css  js  c++  java
  • SQL语句复习【专题二】

    SQL语句复习【专题二】

    单行函数(日期、数学、字符串、通用函数、转换函数)
    多行函数。分组函数。多行数据计算一个结果。
    一共5个。sum(),avg(),max(),min(),count()
    分组函数   分类
    只能处理数值型的数据  sum 、avg
    max,min,count ,任何类型都可以处理。

    --求所有的员工的最高工资,平均工资,工资总和,最小工资,员工的人数。
    select max(sal) 最高工资 ,avg(sal) 平均工资 ,sum(sal) 工资总和 ,min(sal) 最小工资, count(*) 

    --统计部门编号是 10 的员工的总数
    select count(*) from emp where deptno=10
    select count(*) from emp where deptno=20
    select count(*) from emp where deptno=30

    分组查询--group by
    --统计排除10部门,其他部门的总人数,工资的总和,工资的平均值,工资的最大值,工资的最小值,使用工资的总和排序 desc
    select deptno,sum(sal),avg(sal),max(sal),min(sal),count(*)
    from emp
    where deptno<>10
    group by deptno
    order by sum(sal) desc
    --使用别名排序
    select deptno,sum(sal) 工资总和,avg(sal),max(sal),min(sal),count(*)
    from emp
    where deptno<>10
    group by deptno
    order by 工资总和 desc

    sql 书写顺序有严格的要求,必须遵守【sql 执行的顺序:from--->where--->group by---select --->order by
    ---统计每个部门的总人数,工资的总和,工资的平均值,工资的最大值,工资的最小值,使用工资的总和排序,只显示工资的平均值 >= 2000
    select deptno, count(*),sum(sal),avg(sal),max(sal),min(sal)
    from emp
    where avg(sal) >= 2000---where 后面跟的行过滤条件,不能跟分组的函数,不能进行分组之后的条件的过滤。  不可以
    group by deptno
    order by sum(sal)
    正确写法
    select deptno, count(*),sum(sal),avg(sal),max(sal),min(sal)
    from emp
    --where avg(sal) >= 2000---where 后面跟的行过滤条件,不能跟分组的函数,不能进行分组之后的条件的过滤。
    group by deptno
    order by sum(sal)

    having:是进行分组过滤的条件的关键字。后面可以跟 where 使用的任何的内容。
    sql 注意书写顺序【sql 执行的顺序:from--->where--->group by--->having--->select --->order by】
    --统计部门人数,平均工资,排除10部门,和平均工资> 1000的部门
    select deptno, count(*), avg(sal)
    from emp
    where deptno<>10
    group by deptno
    having avg(sal) > 1000
    --使用别名
    select deptno as 部门编号 , count(*) 部门人数 , avg(sal) 平均工资
    from emp
    where deptno<>10
    group by deptno
    having avg(sal) > 1000---只能使用avg(sal) 不能使用别名。别名的生效是在select 执行之后才有效的。而having实在 select之前执行的。
    order by 平均工资 desc--order by 最后排序,可以使用select 中的别名。

    多字段分组
    --平均工资大于1200的部门和工作的组合
    select deptno, job,avg(sal)
    from emp
    group by deptno, job
    having avg(sal)>1200

    --统计部门人数小于4的部门的平均工资 和 人数
    select deptno, count(*), avg(sal)
    from emp
    group by deptno
    having count(*) < 4

    --统计各部门最高工资,排除最高工资小于3000的部门
    select deptno, max(sal)
    from emp
    group by deptno
    having max(sal) >= 3000

  • 相关阅读:
    centos yum安装报错could not resolve host: mirrorlist.centos.org
    feign拦截器和解码器
    git error:invalid path
    Codeforces Round #689 (Div. 2)
    RSA加解密,Java和C#互通
    C# WinForm遍历窗体控件的3种方法
    vs2019如何自动生成有下划线前缀的字段名?
    C# EF Core 后端代码已定义的用户实体,如何扩展字段?
    SQL Server 查询分析及优化方法
    SQL Server 新增函数大全(各版本)
  • 原文地址:https://www.cnblogs.com/cao-yin/p/10497917.html
Copyright © 2011-2022 走看看