SQL练习题:emp和dept表操作示例
一 编写sql语句
- 查询emp表中记录数:
 
SELECT COUNT(*) FROM emp;
- 查询emp表中月薪大于2500的人数:
 
SELECT COUNT(*) FROM emp WHERE sal > 2500;
- 查询有奖金的人数,以及有领导的人数:
 
SELECT COUNT(comm), COUNT(mgr) FROM emp WHERE comm IS NOT NULL AND mgr IS NOT NULL;
二 编写sql语句
- 查询所有雇员月薪和:
 
SELECT SUM(sal) FROM emp;
- 查询所有雇员月薪和,以及所有雇员奖金和:
 
SELECT SUM(sal), SUM(comm) FROM emp;
- 查询所有雇员月薪+奖金和:
 
SELECT SUM(sal+comm) FROM emp;
- 统计所有员工平均工资:
 
SELECT AVG(sal) FROM emp;
- 查询最高工资和最低工资:
 
SELECT MAX(sal), MIN(sal) FROM emp;
三 编写sql语句
- 查询出部门编号为30的所有员工:
 
SELECT * FROM emp WHERE deptno = 30;
- 所有销售员的姓名、编号和部门编号:
 
SELECT empno, ename, deptno FROM emp WHERE job = 'SALESMAN';
- 找出奖金高于工资的员工:
 
SELECT * FROM emp WHERE comm > sal;
- 找出奖金高于工资60%的员工:
 
SELECT * FROM emp WHERE comm > sal*0.6;
- 找出部门编号为10中所有经理,和部门编号为20中所有销售员的详细资料:
 
SELECT * FROM emp WHERE (deptno = 10 AND job = 'MANAGER') OR (deptno = 20 AND job = 'SALESMAN');
- 找出部门编号为10中所有经理,部门编号为20中所有销售员,还有即不是经理又不是销售员但其工资大或等于2000的所有员工详细资料:
 
SELECT * FROM emp WHERE (deptno = 10 AND job = 'MANAGER') OR (deptno = 20 AND job = 'SALESMAN') OR (job NOT IN ('MANAGER', 'SALESMAN') AND sal >= 2000);
- 无奖金或奖金低于1000的员工:
 
SELECT * FROM emp WHERE comm IS NULL OR comm < 1000;
- 查询名字由三个字组成的员工:
 
SELECT * FROM emp WHERE LENGTH(ename) = 3;
10.查询2000年入职的员工:
SELECT * FROM emp WHERE YEAR(hiredate) = 2000;
- 查询所有员工详细信息,用编号升序排序:
 
SELECT * FROM emp ORDER BY empno ASC;
- 查询所有员工详细信息,用工资降序排序,如果工资相同使用入职日期升序排序:
 
SELECT * FROM emp ORDER BY sal DESC, hiredate ASC;
- 查询每个部门的平均工资:
 
SELECT deptno, AVG(sal) FROM emp GROUP BY deptno;
- 查询每个部门的雇员数量:
 
SELECT deptno, COUNT(*) FROM emp GROUP BY deptno;
- 查询每种工作的最高工资、最低工资、人数:
 
SELECT job, MAX(sal), MIN(sal), COUNT(*) FROM emp GROUP BY job;
原文地址: https://www.cveoy.top/t/topic/orDQ 著作权归作者所有。请勿转载和采集!