mysql練習題合集

表結構:

1、部門表:部門編號,部門名稱,位置

create table dept(
		deptno int(10) primary key,
		dname varchar(14),
		loc varchar(13)
);

2、薪資表:薪資等級、當前等級的最低薪資、當前等級的最高薪資

create table salgrade(
		grade int(11),
		losal int(11),
		hisal int(11)
);

3、員工表:員工編號、名稱、工作崗位、上級編號、錄用日期、工資、獎金、部門編號

create table emp(
		empno int(4) primary key,
		ename varchar(10),
		job varchar(9),
		mgr int(4),
		hiredate date,
		sal double(7,2),
		comm double(7,2),
		deptno int(2)
);

1、取得每個部門最高薪水的人員名稱

先取得每個部門的最高薪水,組成臨時表,然後與員工表連接得到名稱

select e.ename, t.maxSal from emp e
join (select deptno, max(sal) maxSal from emp group by deptno) t
on e.deptno = t.deptno and e.sal = t.maxSal;

2、哪些人的薪水在部門的平均薪水之上

先取得每個部門的平均薪水組成臨時表,然後與員工表連接得到,注意連接條件

select e.ename, e.sal, t.avgSal, t.deptno from emp e
join (select deptno, avg(sal) avgSal from emp group by deptno) t
on e.deptno = t.deptno and e.sal > t.avgSal;

3、取得每個薪水等級有多少員工

先取得每個員工的薪水等級組成臨時表,然後再按薪水等級分組統計即可。

select t.grade, count(*) from 
(select e.ename, s.grade from emp e
join salgrade s
on e.sal BETWEEN s.losal and s.hisal) t 
GROUP BY t.grade;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章