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

MySql基础34题写题记录(21-29)

21、列出在部门"SALES"工作的员工的姓名,假定不知道销售部的部门编号

    先找到销售部的部门编号

Select deptno

From dept

Where dname = ‘sales’

    再找部门员工

Select ename

From emp

Where deptno = (Select deptno

From dept

Where dname = ‘sales’);

22、列出薪金高于公司平均薪金的所有员工,所在部门,上级领导,雇员的工资等级

    这里注意在找员工和领导的时候要用外联,因为king没有领导,如果不用外联的话,会少人

先找到平均工资

Select avg(sal)

From emp

    再找剩下的信息

Select a.ename,c.dname,b.ename,a.sal

From emp a

Left Join emp b

On a.mgr = b.empno

Join dept c

On a.deptno = c.deptno

Where a.sal > (Select avg(sal)

From emp);

23、列出与"SCOTT"从事相同工作的所有员工及部门名称

    问题出现在没有吧scott本人排除掉

    先找scott从事的工作

Select e.job myjob

From emp e

Where e.ename = ‘scott’

    再找和scott从事相同的工作的员工和部门名称

Select e.ename,d.dname

From emp e

Join dept d

On e.deptno = d.deptno

Where e.job =( Select e.job myjob

From emp e

Where e.ename = ‘scott’) and ename <> 'SCOTT' ;

24、列出薪金等于部门30中员工的薪金的其他员工的姓名和薪金

    这题感觉好怪,没管了

25、列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金.部门名 称

    找部门30里面的最高工资

Select max(sal) max_sal

From emp

Where deptno = 30

    找高于部门30最高工资的其他员工信息

Select e.ename,e.sal,d.dname

From emp e

Join dept d

On e.deptno = d.deptno

Where e.sal > (Select max(sal) max_sal

From emp

Where deptno = 30);

26、列出在每个部门工作的员工数量,平均工资和平均服务期限

    问题:这里题目要求的部门是要显示部门名称,要考虑到为null的情况,在这里应该不会导致错误,因为会被忽略,只是不太好看

计算时间是计算的两个年差,在mysql中,用到了timestampdiff函数,语法TimeStampDiff(间隔类型, 前一个日期, 后一个日期)

Select count(e.ename),ifnull(avg(e.sal),0),ifnull(avg(timestampdiff(year,e.hiredate,now())),0),d.dname

From emp e

Right join dept d

On e.deptno = d.deptno

Group by d.deptno;

27、列出所有员工的姓名、部门名称和工资

Select e.ename,d.dname,e.sal

From emp e

Join dept d

On e.deptno = d.deptno

28、列出所有部门的详细信息和人数

Select count(e.ename),d.*

From emp e

Right Join dept d

On e.deptno = d.deptno

Group by e.deptno;

29、列出各种工作的最低工资及从事此工作的雇员姓名

    问题,采用了左联,意思是左边的所有都要显示,但是结果明显是不能显示所有,因此出结果的时候,出现了14行结果

    另外一个问题是,连接时,只要求两个表的工作相同,并没有要求工资相同,这就不能把最低工资的人找出来,只能把这个工作的人找出来

    先求最低工资

Select min(sal) min_sal,job

From emp e

Group by job;

    再求雇员名字

Select e.ename,d.min_sal,d.job

From emp e

join (Select min(sal) min_sal,job

From emp e

Group by job) d

On e.job = d.job and e.sal = d.min_sal;


最近课真的太多太多了,已经好久没更新了,以后尽量一天一更!


http://www.kler.cn/a/371834.html

相关文章:

  • 爬虫利器playwright
  • C语言中的野指针以及避免野指针的常用方式
  • 第8天:数据存储-补充材料——MainActivity.kt解读
  • Mysql通过zip安装使用
  • 量子容错计算
  • 晓羽扫码点餐快销版系统源码
  • 【AI】numpy_pandas_matplotlib_sklearn合集
  • macOS Sonoma 14.7.1 (23H222) Boot ISO 原版可引导镜像下载
  • 没有对象来和我手撕红黑树吧
  • 安装git-lfs发生报错Could not find Git; can not register Git LFS.解决方案
  • Milvus - 内存索引类型详解
  • 中阳金融智能量化交易系统的创新与未来发展
  • 出海要深潜,中国手机闯关全球化有了新标杆
  • 网络安全包含哪些方面?如何加强网络安全建设?
  • 函数练习python
  • BERT,RoBERTa,Ernie的理解
  • UI 组件的二次封装
  • 获取平台Redis各项性能指标
  • socket编程---UDP
  • Python应用指南:利用高德地图API实现路径规划
  • 代码随想录训练营Day11 | 226.翻转二叉树 - 101. 对称二叉树 - 104.二叉树的最大深度 - 111.二叉树的最小深度
  • 高级java每日一道面试题-2024年10月24日-JVM篇-说一下JVM有哪些垃圾回收器?
  • Javascript进阶
  • golang包导入注意事项
  • 基于SSM+小程序的垃圾分类管理系统(垃圾3)
  • Notion + Python + scholarly = 超强文献管理助手