表的复杂查询

本文深入探讨了SQL查询的基础知识,包括如何消除重复行、排序数据、数据分组及聚合函数的应用,通过实例展示了如何计算平均工资、最高工资、最低工资,并对数据进行分组与筛选。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

员工表emp:

    字段:empno(编号),ename(姓名),job(职位),mgr(上级的编号),hiredate(入职时间),sal(薪水),comm(奖金),deptno(部门编号)

部门表dept

   字段:deptno(部门编号),dname(部门名),loc(地点)

1.取消重复行(distinct  只能消除完全一样的行,保留一行)

   select distinct 字段 from 表名 where 条件

2.排序

   order by 默认是升序排序

   order by desc 降序

3.数据分组——max,min,avg,sum,count

  ----如何显示所有员工中工资最高和工资最低的

  ----如何显示最低工资和该雇员的名字

  .select  ename,sal  from  emp where sal=(select min(sal) from emp)

  ----显示所有员工的平均工资和工资总和

  -----把高于平均工资的雇员的名字和他的工资显示出来

    select avg(sal) 平均工资,sum(sal) 总工资 from emp,

   select ename,sal from emp where sal>(select avg(sal) from emp)

  ----统计共有多少员工

    select count(*) from emp

4.group by 和having

  group by 用于对查询结果分组统计

  having 子句用于限制分组显示结果,往往和group by 结合使用,对分组查询的结果进行筛选

----如何显示每个部门的平均成绩和最高成绩  

   select avg(sal),deptno,max(sal) from emp group by deptno 

----显示每个部门的每种岗位的平均工资和最低工资

    select avg(sal),min(sal),deptno,job from emp group deptno,job order by deptno

----显示平均工资低于2000的部门号和它的平均工资

  select avg(sal) ,deptno from emp group by deptno having  avg(sal) <2000  order by avg(sal) asc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值