• mysql练习1


    1. -- 1.查询出部门编号为BM01的所有员工
    2. SELECT
    3. *
    4. FROM
    5. emp e
    6. WHERE
    7. e.deptno = 'BM01';
    8. -- 2.所有销售人员的姓名、编号和部门编号。
    9. SELECT
    10. e.empname,
    11. e.empno,
    12. e.deptno
    13. FROM
    14. emp e
    15. WHERE
    16. e.empstation = "销售人员";
    17. -- 3.找出奖金高于工资的员工。
    18. SELECT
    19. *
    20. FROM
    21. emp2
    22. WHERE
    23. sal < comm;
    24. -- 4.找出奖金高于工资60%的员工。
    25. SELECT * FROM emp2 WHERE comm > ( sal * 0.6 );
    26. -- 5.找出部门编号为10中所有经理,和部门编号为20中所有销售员的详细资料。
    27. select
    28. *
    29. from emp2
    30. where (deptno = 10 and job = 'MANAGER') or (deptno = 20 and job = 'SALESMAN');
    31. -- 6.找出部门编号为10中所有经理,部门编号为20中所有销售员,还有即不是经理又不是销售员但其工资大或等于20000的所有员工详细资料。
    32. select
    33. *
    34. from emp2
    35. where (deptno = 10 and job = 'MANAGER') or (deptno = 20 and job = 'SALESMAN')
    36. or (job not in ('MANAGER','SALESMAN') and sal >= 2000);
    37. -- 7.无奖金或奖金低于1000的员工。
    38. select * from emp2 where comm is null or comm < 1000;
    39. -- 8. 查询名字由三个字组成的员工。
    40. -- 注意:一个汉字占三个字节
    41. select * from emp2 e where e.ename like '___';
    42. -- 9.查询2023年入职的员工。
    43. select * from emp2 where YEAR(hiredate) like '2023%';
    44. -- 10. 查询所有员工详细信息,用编号升序排序
    45. select * from emp2 order by empno asc;
    46. -- 11. 查询所有员工详细信息,用工资降序排序,如果工资相同使用入职日期升序排序
    47. select * from emp2 e order by e.sal desc,e.hiredate;
    48. -- 12.查询每个部门的平均工资
    49. select avg(e.sal) d.deptname from emp2 e,dept d
    50. group by d.deptno
    51. on e.deptno = d.deptno;
    52. select avg(sal),deptno,dept from emp2
    53. group by deptno;
    54. -- 13.查询每个部门的雇员数量
    55. select
    56. deptno,count(deptno)
    57. from emp2
    58. group by deptno;
    59. -- 14.查询每种工作的最高工资、最低工资、人数
    60. select max(sal),min(sal),count(job)
    61. from emp2
    62. group by job;
    63. -- 18.列出工资比ALLEN高的所有员工
    64. select * from emp2 where sal > (select sal from emp2 where ename = 'ALLEN');
    65. -- 19.列出所有员工的姓名及其直接上级的姓名
    66. select
    67. e1.ename,
    68. e2.ename
    69. from emp2 e1,emp2 e2
    70. where e1.mgr = e2.empno
    71. -- 20.列出受雇日期早于直接上级的所有员工的编号、姓名、部门名称
    72. select
    73. e1.ename,
    74. e2.ename
    75. from emp2 e1,emp2 e2
    76. where e1.mgr = e2.empno and e1.hiredate < e2.hiredate;
    77. -- 21.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门
    78. select deptname,e.* from dept d,emp2 e where count(dept) is null;
    79. -- 22.列出所有文员(CLERK)的姓名及其部门名称,部门的人数
    80. select e.ename,d.deptname,d.deptno
    81. from emp2 e
    82. join dept d
    83. where e.job = 'CLERK';
    84. -- 23.列出最低薪金大于1500的各种岗位及从事此岗位的员工人数
    85. SELECT e.job,min(sal) min_salary,count(e.empno)
    86. from emp2 e
    87. group by e.job
    88. having min_salary > 1500;
    89. -- 25.列出薪金高于公司平均薪金的所有员工信息,所在部门名称,上级领导,工资等级
    90. -- select d.deptname,e1.ename e2.ename as leadername,
    91. -- where emp2 e1 join dept12 d on e.deptno = d.deptno
    92. -- left join emp2 b on e.mgr = b.empno#解决员工与领导的一个关联问题
    93. -- join sa
    94. # (1)公司平均薪资
    95. select avg(sal) avgsal from emp;
    96. +-------------+
    97. | avgsal |
    98. +-------------+
    99. | 2073.214286 |
    100. +-------------+
    101. # (2)第一个连接:部门名字
    102. # 第二个左连接:emp表看成两张表,列出员工对应的上级领导
    103. # 第三个连接:工资等级
    104. select d.dname,e.ename,b.ename as leadername,grade
    105. from emp e join dept d on e.deptno=d.deptno
    106. left join emp b on e.mgr=b.empno
    107. join salgrade s on e.sal between s.losal and s.hisal
    108. where e.sal>(select avg(sal) avgsal from emp);
    109. +------------+-------+------------+-------+
    110. | dname | ename | leadername | grade |
    111. +------------+-------+------------+-------+
    112. | RESEARCH | FORD | JONES | 4 |
    113. | RESEARCH | SCOTT | JONES | 4 |
    114. | ACCOUNTING | CLARK | KING | 4 |
    115. | SALES | BLAKE | KING | 4 |
    116. | RESEARCH | JONES | KING | 4 |
    117. | ACCOUNTING | KING | NULL | 5 |
    118. -- 26.列出与SMITH从事相同工作的所有员工及部门名称
    119. select d.dname,e.*
    120. from emp2 e
    121. join dept12 d
    122. on e.deptno = d.deptno
    123. where e.job = (select job from emp2 where ename = "SMITH");
    124. -- 27.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金、部门名称
    125. # (1)部门30中的员工最高工资
    126. select max(sal) from emp2 where deptno=30;
    127. +----------+
    128. | max(sal) |
    129. +----------+
    130. | 2850.00 |
    131. +----------+
    132. # (2)高于最高工资的其他员工
    133. select deptno,ename,sal from emp2
    134. where sal>(select max(sal) from emp where deptno=30)
    135. and deptno!=30;
    136. +--------+-------+---------+
    137. | deptno | ename | sal |
    138. +--------+-------+---------+
    139. | 20 | JONES | 2975.00 |
    140. | 20 | SCOTT | 3000.00 |
    141. | 10 | KING | 5000.00 |
    142. | 20 | FORD | 3000.00 |
    143. +--------+-------+---------+
    144. # (3)连接dept表
    145. select d.dname,t.ename,t.sal
    146. from (select deptno,ename,sal from emp2
    147. where sal>(select max(sal) from emp where deptno=30)
    148. and deptno!=30) t
    149. join dept12 d
    150. on t.deptno=d.deptno;
    151. +------------+-------+---------+
    152. | dname | ename | sal |
    153. +------------+-------+---------+
    154. | RESEARCH | JONES | 2975.00 |
    155. | RESEARCH | SCOTT | 3000.00 |
    156. | ACCOUNTING | KING | 5000.00 |
    157. | RESEARCH | FORD | 3000.00 |
    158. +------------+-------+---------+
    159. -- 28.列出在每个部门工作的员工数量、平均工资
    160. select d.deptno,count(ename) num,avg(sal)
    161. from emp2 e
    162. right join dept12 d
    163. on e.deptno = d.deptno
    164. group by deptno;

     

  • 相关阅读:
    【二分图染色】ARC 165 C
    物联网仪表ADW300接入ONENET平台介绍
    神经网络故障预测模型,神经网络故障预测方法
    Java:实现测试一个数是否为素数算法(附完整源码)
    kindle通过原装数据线连接mac book不显示设备解决办法
    4. Java 的线程安全机制之`volatile`
    【JavaScript复习】【一篇就够】作用域
    照身帖、密钥,看古代人做实名认证有哪些招数?
    csdn_export_md
    球钟问题既栈和队列的结合实例
  • 原文地址:https://blog.csdn.net/weixin_53415999/article/details/134497635