您的位置:首页 > 数据库 > MySQL

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

2017-05-17 08:56 609 查看
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:取得平均薪水最高的部门的部门编号(至少给出两种解决方)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: