SQL 语句小练习

emp表中还有ename(名字),sal(工资),deptno(部门号); 

选择各个部门里面工资最高的人的姓名,工资,和部门号;代码如下:

select ename,sal,emp.DEPTNO
from emp join (select max(sal) max_sal,deptno
           from emp
      group by deptno) temp
on (emp.SAL = temp.max_sal and emp.DEPTNO = temp.deptno)
order by emp.DEPTNO; 

 

求各个部门工资的平均值属于哪个等级。

select t.deptno, t.avgs, grade
from (select deptno, avg(sal) avgs from emp group by deptno) t join salgrade g
on (t.avgs between g.losal and g.hisal);

 

求各个部门的等级的平均值

select deptno, avg(grade) from
(
 select deptno, grade
 from emp join salgrade
 on(emp.sal between salgrade.losal and salgrade.hisal)
) t
group by deptno;

 

求雇员中那些是经理

select ename
from emp e
where e.EMPNO in (select distinct m.mgr from emp m);

不用组函数,求薪水的最大值

select sal
from emp
where emp.sal not in
(
select distinct e.sal
from emp e join emp m
on e.sal < m.sal
);

 

求各部门工资平均值最大的部门编号

select t.deptno
from (
     select deptno, avg(sal) avgs
  from emp
  group by deptno
  ) t
where t.avgs =(  
    select max(m.avgs)
    from (select deptno, avg(sal) avgs
      from emp
      group by deptno
      ) m
   ); 

 

求部门工资平均值最大的部门名称:

select dname,deptno
from dept
where deptno in(

    select t.deptno
    from (
         select deptno, avg(sal) avgs
      from emp
      group by deptno
      ) t
    where t.avgs in (  
        select max(m.avgs)
        from (select deptno, avg(sal) avgs
          from emp
          group by deptno
          ) m
       )
);

 

求平均工资等级最低的部门名称

select dname
from dept
where dept.DEPTNO in(

select deptno
from(

 select deptno,avgsal, grade
  from(
   select deptno,avg(sal) avgsal
   from emp
   group by deptno
  ) t1 join salgrade g
  on (
     avgsal between g.losal and g.hisal
  )

) t2
where t2.grade=(

 select min(grade)
 from (
 
  select deptno,avgsal, grade
  from(
   select deptno,avg(sal) avgsal
   from emp
   group by deptno
  ) t1 join salgrade g
  on (
     avgsal between g.losal and g.hisal
  )
 
 )

)


);

也可以采用组函数嵌套,但是最多只能嵌套两层。

 

 

求比普通员工的最高工资还高的经理人的名称。

select ename from (
    select * from emp where emp.EMPNO in (select mgr from emp where mgr is not null)
)
where
sal > (

 select max(sal)
 from emp e1
 where e1.EMPNO not in (
    select e2.MGR from emp e2 where e2.MGR is not null
 )

);

 

 

select ename from emp
where
sal > (

 select max(sal)
 from emp e1
 where e1.EMPNO not in (
    select MGR from emp where MGR is not null
 )

)
and empno in(select distinct mgr from emp where mgr is not null );

 

效率比较:

select * from emp where deptno = 10 and ename like '%A%';  语句一

select * from emp where ename like '%A%' and deptno = 10;  语句二

语句一 > 语句二

 

rownum,orcale提供了一个伪字段rownum,但是rownum只可以与小于,小于等于联用,但不可以与大于,等于,大于等于联用。

 

select ename from emp where rownum <=5; (正确)

select ename from emp where rownum =5 ;(错误)

select ename from (select ename,rownum from emp)where rownum =5;(正确)

 

 

求工资最高的前五名员工的工资。

 

select sal from emp where rownum <=5 order by sal desc;(错误)

select sal from (select sal,rownum from emp order by sal desc) where rownum <=5 ;(正确)

 

求工资最高的第六名到第十名。

 

select sal from (select sal,rownum r from emp order by sal desc) where r>=6 and r<=10;(错误)

 

select ename,sal, rownum r from (
    select ename, sal from emp order by sal desc
) r <=10 and r>=6;(错误)

 

select ename,sal from(
 select ename,sal, rownum r from (
     select ename, sal from emp order by sal desc
 )
)where r >=6 and r<= 10;(正确)

【评估多目标跟踪方法】9个高度敏捷目标在编队中的轨迹和测量研究(Matlab代码实现)内容概要:本文围绕“评估多目标跟踪方法”,重点研究9个高度敏捷目标在编队飞行中的轨迹生成与测量过程,并提供完整的Matlab代码实现。文中详细模拟了目标的动态行为、运动约束及编队结构,通过仿真获取目标的状态信息与观测数据,用于验证和比较不同多目标跟踪算法的性能。研究内容涵盖轨迹建模、噪声处理、传感器测量模拟以及数据可视化等关键技术环节,旨在为雷达、无人机编队、自动驾驶等领域的多目标跟踪系统提供可复现的测试基准。; 适合人群:具备一定Matlab编程基础,从事控制工程、自动化、航空航天、智能交通或人工智能等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于多目标跟踪算法(如卡尔曼滤波、粒子滤波、GM-CPHD等)的性能评估与对比实验;②作为无人机编队、空中交通监控等应用场景下的轨迹仿真与传感器数据分析的教学与研究平台;③支持对高度机动目标在复杂编队下的可观测性与跟踪精度进行深入分析。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,重点关注轨迹生成逻辑与测量模型构建部分,可通过修改目标数量、运动参数或噪声水平来拓展实验场景,进一步提升对多目标跟踪系统设计与评估的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值