历史上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:取得平均薪水最高的部门的部门编号(至少给出两种解决方)
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:取得平均薪水最高的部门的部门编号(至少给出两种解决方)
相关文章推荐
- 经典sql语句大全-非常有用(特指Mysql)
- 经典sql语句大全(特指Mysql)
- mysql生成sql语句 and 查看mysql历史命令 and 查看mysql历史命令 and 解压命令 and 安装WPS and 启动Oracle服务
- 【MySQL】经典数据库SQL语句编写练习题——SQL语句扫盲
- Mysql系列(十六)经典Sql语句集锦
- 经典sql语句大全-非常有用(特指Mysql)
- Mysql经典sql语句大全
- 【MySQL】经典数据库SQL语句编写练习题——SQL语句扫盲
- SQL语句的经典语句50例--MySQL版本的答案
- mysql 经典sql语句
- Mysql经典sql语句
- 经典MySQL语句大全和常用SQL语句命令的作用。
- T-SQL经典语句搜藏(二)
- 获取MS SQL库数据字典的经典SQL语句
- 经典分页sql语句
- 经典的SQL语句
- 获取MS SQL库数据字典的经典SQL语句
- 经典sql语句
- 又一个经典的SQL语句
- 我常用经典SQL语句[就先写一句吧]