历史上mysql最经典的34个SQL语句(百看不厌)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pangqiandou/article/details/72355135

1:取得每个部门最高薪水的人员名称

  1)取得每个部门最高薪水(按部门分组求最大值)

 select t.*,e.ename from emp e join (select deptno,max(sal) as maxsal from emp group by deptno) t on e.deptno=t.deptno and t.maxsal=e.sal;
+--------+---------+-------+
| deptno | maxsal  | ename |
+--------+---------+-------+
|     30 | 2850.00 | BLAKE |
|     20 | 3000.00 | SCOLL |
|     10 | 5000.00 | KING  |
|     20 | 3000.00 | FORD  |
+--------+---------+-------+
4 rows in set (0.05 sec)


2:哪些人薪水在部门平均薪水之上

 select ename,t.* from emp e join (select deptno,avg(sal) as avgsal from emp group by deptno) t on e.deptno=t.deptno and e.sal>avgsal;
+-------+--------+-------------+
| ename | deptno | avgsal      |
+-------+--------+-------------+
| ALLEN |     30 | 1566.666667 |
| JONES |     20 | 2175.000000 |
| BLAKE |     30 | 1566.666667 |
| SCOLL |     20 | 2175.000000 |
| KING  |     10 | 2916.666667 |
| FORD  |     20 | 2175.000000 |
+-------+--------+-------------+
6 rows in set (0.00 sec)


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


select e.deptno,avg(s.grade) from emp e join salgrade s on e.sal between s.losal and s.hisal  group by e.deptno;
+--------+--------------+
| deptno | avg(s.grade) |
+--------+--------------+
|     10 |       3.6667 |
|     20 |       2.8000 |
|     30 |       2.5000 |
+--------+--------------+
3 rows in set (0.03 sec)


4:不允许使用聚合函数,求最高薪水

  按照薪水降序排序, 取得第一条记录

select sal  from emp order by sal desc  limit 1;

+---------+
| sal     |
+---------+
| 5000.00 |
+---------+
1 row in set (0.00 sec)


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


没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试