mysql数据库查询作业_MySQL 数据库查询练习

+----------+-------+---------+--------+------+------------+------+------+--------+| deptname | empno | empname | job | mgr | hiredate | sal | comm | deptno |+----------+-------+---------+--------+------+------------+------+------+--------+| 会计部 |7782 | 关羽 | 经理 | 7839 | 1981-06-09 | 2450 | NULL | 10|

| 会计部 |7839 | 韩少云 | 董事长 | NULL | 1981-11-17 | 5000 | NULL | 10|

| 会计部 |7934 | 夏侯惇 | 办事员 | 7782 | 1982-01-23 | 1300 | NULL | 10|

| 调查部 |7369 | 张无忌 | 办事员 | 7902 | 1980-12-17 | 800 | NULL | 20|

| 调查部 |7566 | 朱元璋 | 经理 | 7839 | 1981-04-02 | 2975 | NULL | 20|

| 调查部 |7788 | 宋江 | 分析员 | 7566 | 1987-04-19 | 3000 | NULL | 20|

| 调查部 |7876 | 张飞 | 办事员 | 7788 | 1987-05-23 | 1100 | NULL | 20|

| 调查部 |7902 | 诸葛亮 | 分析员 | 7566 | 1981-12-03 | 3000 | NULL | 20|

| 销售部 |7499 | 曹操 | 推销员 | 7698 | 1981-02-20 | 1600 | 300 | 30|

| 销售部 |7521 | 杨志 | 推销员 | 7698 | 1981-02-22 | 1250 | 500 | 30|

| 销售部 |7654 | 殷天正 | 推销员 | 7698 | 1981-09-28 | 1250 | 1400 | 30|

| 销售部 |7698 | 张三丰 | 经理 | 7839 | 1981-05-01 | 2850 | NULL | 30|

| 销售部 |7844 | 孙二娘 | 推销员 | 7698 | 1981-09-08 | 1500 | 0 | 30|

| 销售部 |7900 | 赵云 | 办事员 | 7698 | 1981-12-03 | 950 | NULL | 30|+----------+-------+---------+--------+------+------------+------+------+--------+

-- 1.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。/*列: deptname, emp.*条件: emp.deptno=dept.deptno*/select d.deptname, e.*from dept d left join emp e

on e.deptno=d.deptno;-- 2.列出薪资比关羽高的所有员工。/*列: emp.*表: emp

条件: sal>(关羽的薪资)*/

--求出关羽的薪资:

select*from emp

where sal> (select sal from emp where empname='关羽');-- 3.列出所有员工的姓名及其直接上级的姓名。/*列: e1.empname, (直接上级)e2.empname

表: emp e1, emp e2

条件: e1.mgr=e2.empno*/select e1.empname, e2.empname

from emp e1, emp e2

where e1.mgr=e2.empno;-- 4.列出最低薪资大于1500的各种职位及从事此职位的员工人数。/*列: job 员工人数

表: emp

条件: 最低薪资(分组)>1500分组条件: job*/select job, min(sal) 最低工资, count(*) 员工人数

from emp

group by job

having min(sal)>1500;-- 5.列出在销售部的员工的姓名,假定不知道销售部的部门编号。/*列: empname

表: dept d, emp e

条件: d.deptname='销售部' d.deptno=e.deptno*/select e.empname, d.deptname

from dept d, emp e

where d.deptname='销售部' and d.deptno=e.deptno;-- 6.列出与曹操从事相同职位的所有员工及部门名称。/*列: e.empname d.deptname

表: emp e, dept d

条件: job='曹操的职位' e.deptno=d.deptno*/select e.empname, d.deptname, e.job

from emp e, dept d

where e.deptno=d.deptno and job=(select job from emp where empname='曹操');-- 7.列出薪资高于在销售部(已知部门编号为30)就职的所有员工的薪资的员工姓名和薪资、部门名称。/*列: e.empname, e.sal, d.deptname

表: emp e, dept d

条件: e.deptno=d.deptno sal>(30号部门的最高薪资)*/select d.deptname, e.* /*select d.deptname, e.sal, e.empname*/from emp e, dept d

where e.deptno=d.deptno and e.sal > (select max(sal) from emp where deptno=30);-- 8.列出在每个部门职位的员工数量、平均工资。/*列: 员工数量, 平均工资

表: emp

分组条件: deptno

聚合函数: count(*), avg(sal)*/select deptno, count(*) 员工数量, avg(sal) 平均工资

from emp

group by deptno;-- 9.查出至少有一个员工的部门。显示部门人数、部门编号、部门名称、部门位置。/*列: 部门人数(count(*)) d.deptno, d.deptname, d.loc

表: emp e, dept d

条件: e.deptno=d.deptno

分组条件: e.deptno*/select d.*, count(*) 部门人数

from emp e, dept d

where e.deptno=d.deptno

group by e.deptno;-- 10.列出受雇日期早于直接上级的所有员工的编号、姓名、部门名称。/*列: e.empno, e.empname, d.deptname

表: emp e1, emp e2, dept d

条件: e1.hiredate

from emp e1, emp e2, dept d

where e1.hiredate

表: emp e, dept d

条件: e.deptno=d.deptno

分组条件: e.deptno*/

--查询员工及对应的部门

select e.empname, d.deptname, d.deptno

from emp e, dept d

where e.deptno=d.deptno;--查询部门的人数

select deptno, count(*) cnt

from emp

group by deptno--关联查询

select e.empname, d.deptname, e.deptno, e2.cnt 部门人数

from emp e, dept d, (

select deptno, count(*) cnt

from emp

group by deptno

) e2

where e.deptno=d.deptno and e.deptno=e2.deptno;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值