本文共 2990 字,大约阅读时间需要 9 分钟。
通过连接查询可以轻松获取每个部门的最高薪水人员信息。以下查询范例可实现:
SELECT e.department, e.`name`, t.maxMoneyFROM ( SELECT e.department as dept, max(e.money) as maxMoney FROM employee e GROUP BY e.department) t JOIN employee e ON t.dept = e.departmentWHERE e.money = t.maxMoney;
寻找薪水超出部门平均水平的员工,可以通过以下查询实现:
SELECT e.department, e.`name`, t.`平均薪水`, e.moneyFROM ( SELECT e.department as dept, avg(e.money) as 平均薪水 FROM employee e GROUP BY e.department) t JOIN employee e ON t.dept = e.departmentWHERE e.money > t.`平均薪水`;
通过与薪酬等级表的连接查询,可以得出部门平均薪水对应的等级:
SELECT t.`部门`, t.`平均薪水`, m.gradeFROM ( SELECT e.department as 部门, avg(e.money) as 平均薪水 FROM employee e GROUP BY e.department) t JOIN moneygrade m ON t.`平均薪水` BETWEEN m.low and m.highWHERE m.grade = (SELECT min(m.grade) FROM ...);
通过关联查询获取未选过指定老师的学生姓名:
SELECT sname FROM s WHERE sno NOT IN (SELECT sno FROM sc WHERE cno = (SELECT cno FROM c WHERE cteacher = '郑老师'));
根据成绩查询未及格学生名单,并统计不及格科目数量:
SELECT sc.sno, s.sname, COUNT(*) as studentSum FROM sc JOIN s ON sc.sno = s.sno WHERE sc.scgrade < 60 GROUP BY sc.snoHAVING studentSum >= 2;
通过查询学生选课表获取课程成绩:
SELECT s.sname FROM sc WHERE cno IN (SELECT cno FROM sc WHERE cno = 1 cno = 2); -- 重复添加的处理需要修正,示例简化
结合内外连接查询,获取员工与领导的信息:
SELECT e.ename, b.ename AS leadernameFROM emp eLEFT JOIN emp b ON e.mgr = b.empno;
通过日志时间查询满足条件的员工:
SELECT d.dname, e.empno, e.enameFROM emp eJOIN emp b ON e.mgr = b.empnoJOIN dept d ON e.deptno = d.deptnoWHERE e.hiredate < b.hiredate;
查看部门及其部门员工的信息:
SELECT d.dname, e.*FROM emp eRIGHT JOIN dept d ON e.deptno = d.deptno;
统计部门员工人数和部门信息:
SELECT d.deptno, d.dname, d.loc, COUNT(e.ename) as totalEmpFROM emp eRIGHT JOIN dept d ON e.deptno = d.deptnoGROUP BY d.deptno, d.dname, d.loc;
通过查询MANAGER职位的员工薪资:
SELECT w.deptno, MIN(w.sal) as minSalFROM emp wWHERE w.job = 'MANAGER'GROUP BY w.deptno;
根据条件查询高管信息:
SELECT e.ename, b.ename AS leadernameFROM emp eJOIN emp b ON e.mgr = b.empnoWHERE b.sal > 3000;
获取薪酬高于部门平均的员工信息:
SELECT d.dname, e.ename, e.salFROM emp eJOIN dept d ON e.deptno = d.deptnoWHERE e.sal > (SELECT max(sal) as maxSal from dept);
统计部门员工数量及薪资平
SELECT d.dname, COUNT(*) as '人数', AVG(e.sal) as '平均工资'FROM emp eJOIN dept d ON d.deptno = e.deptnoGROUP BY d.deptno;
列出所有员工姓名、部门及薪资:
SELECT e.ename as '员工姓名', d.dname as '部门名称', e.sal as '工资'FROM emp eJOIN dept d ON e.deptno = d.deptno;
汇总部门信息及相关员工数据:
SELECT d.deptno, d.dname, d.loc, COUNT(e.ename) as totalEmpFROM emp eRIGHT JOIN dept d ON e.deptno = d.deptnoGROUP BY d.deptno, d.dname, d.loc;
统计不同岗位的最高薪资:
SELECT DISTINCT e.job, t.minSal, e.enameFROM emp eJOIN(SELECT e.job, MIN(e.sal) as minSalFROM emp eJOIN dept d group by e.job) tON e.sal = t.minSal;
通过以上查询,您可以高效处理各类数据分析任务,是数据库开发者和数据分析人员的实用参考。
转载地址:http://yahnz.baihongyu.com/