当前位置: 首页 > news >正文

MySql基础34题写题记录(3-10)

3、取得部门中(所有人的)平均的薪水等级,如下:

select avg(d_grade),deptno from (select d.grade d_grade,e.ename,e.deptnofrom emp e join salgrade d on e.sal between d.losal and d.hisal) agroup by deptno;

4、不准用组函数(Max),取得最高薪水(给出两种解决方案)

5、取得平均薪水最高的部门的部门编号(至少给出两种解决方案)

    开始的时候没有给查询出来的表起名字,因此发生错误:      

selectmax(avg_sal),deptnofrom(select deptno,avg(sal) avg_salfromempgroup bydeptno) a

6、取得平均薪水最高的部门的部门名称

    当时的问题是,需不需要再进行分组,经过显示是正确的,这里应该是再得到子查询表的时候就进行了分组,因此不用在查询的时候继续进行分组

Selectd.dname,max(a.avg_sal)fromdept djoin(select deptno,avg(sal) avg_salfromempgroup bydeptno) aond.deptno = a.deptno;

7、求平均薪水的等级最低的部门的部门名称

    第三题得到了每个部门的平均薪水等级,在此基础上查到最低的薪水等级对应的部门名称

Select min(a_avgsal),d.dnameFrom (select avg(d_grade) a_avgsal,deptno from (select d.grade d_grade,e.ename,e.deptnofrom emp e join salgrade d on e.sal between d.losal and d.hisal) agroup by deptno) ajoin dept don a.deptno = d.deptno;

8、取得比普通员工(员工代码没有在mgr字段上出现的)的最高薪水还要高的 领导人姓名

    这里需要注意是员工代码没有在mgr字段上出现,而不是员工职务是manager

Select enameFrom empWhere job = ‘manager’ and sal > (select max(sal) from emp where job != ‘manager’);

    所以需要推翻重写

    先找员工代码不是mgr的最高薪水

Select max(e.sal)//原因在于没有指定求e中的最大salFrom emp eJoin emp aWhere e.empno != a.mgr

    再找大于最高薪水的领导人

Select e.ename,e.salFrom emp eJoin emp aWhere e.empno = a.mgr and e.sal > (Select max(e.sal)From emp eJoin emp aWhere e.empno != a.mgr);

    发生错误:Column 'sal' in field list is ambiguous,进一步找到该错误是出现在第一步中,原因在第一句

    但是仍然不对,运行第一个代码,查询名字,发现得到了很多名字,也就是在每一列等会进行查询,再输出每一列不一样的,也就是笛卡尔积,这样相当于所有的人都被输出来了,所以第一步得到的最大工资是5000

    最后采用先查出所有领导人编号,再看编号是否在里面,使用not in 的方式得出

Select max(sal)From empWhere empno not in (select distinct mgr from emp where mgr is not null )

    然后找到高于这个薪资的

Select e.ename,e.salFrom emp eWhere e.empno in (select distinct mgr from emp where mgr is not null ) and e.sal > (Select max(sal)From empWhere empno not in (select distinct mgr from emp where mgr is not null ));

9、取得薪水最高的前五名员工

    Limit的位置似乎是放在最后的,开始的时候放错了,放到select后面去了

Select salFrom empOrder by sal desc limit 5;

10、取得薪水最高的第六到第十名员工

    Limit的正确语法是limit 5,5   //注意空格和不要括号

Select salFrom empOrder by sal desc limit5,5;


http://www.mrgr.cn/news/38530.html

相关文章:

  • 滚雪球学MySQL[4.1讲]:索引与优化
  • make文件
  • C++学习9.28
  • 不将“旧”,换新家电的门槛又被TCL拉低了
  • C++使用库(静态链接)
  • K8S真正删除pod
  • 【SQL】未订购的客户
  • 第十四届蓝桥杯真题Java c组D.平均(持续更新)
  • SpringCloud入门(九)Feign实战应用和性能优化
  • OpenCV透视变换:原理、应用与实现
  • Makefile编程:4种赋值差异
  • MySQL基础--表的增删改查
  • 算法复杂度-空间
  • 找不到msvcp110.dll怎么办,总结6种解决msvcp110.dll的方法
  • 大数据毕业设计选题推荐-食品销售数据分析系统-Hive-Hadoop-Spark
  • css 数字比汉字要靠上
  • 【刷点笔试面试题试试水】 i++与++i哪个效率更高?
  • webpack 和 vite 区别
  • Accelerate单卡,多卡config文件配置
  • 对小白友好的与易我同级别四款剪辑工具推荐: