SELECT * FROM emp;

Oracle 子查询和组函数练习

SELECT * FROM dept;

Oracle 子查询和组函数练习

1、查询公司员工工资的最大值,最小值,平均值和总和。

SELECT MAX(sal) AS 工资最大值, MIN(sal) AS 工资最小值
    , AVG(sal) AS 工资平均值, SUM(sal) AS 工资总和
FROM emp;

Oracle 子查询和组函数练习

2、查询各 job 的员工工资的最大值,最小值,平均值和总和。

SELECT job, MAX(sal), MIN(sal)
    , AVG(sal), SUM(sal)
FROM emp
GROUP BY job;

Oracle 子查询和组函数练习

3、选择具有各个 job 的员工人数

SELECT job, COUNT(job) AS 人数
FROM emp
GROUP BY job;

Oracle 子查询和组函数练习

4、显示平均工资 >2000 的职位

SELECT job
FROM emp
GROUP BY job
HAVING AVG(sal) > 2000;

Oracle 子查询和组函数练习

5、计算工资在 2000 以上,各种职位的平均工资大于 3000 的职位及平均工资。

SELECT job, AVG(sal)
FROM emp
WHERE sal > 2000
GROUP BY job
HAVING AVG(sal) > 3000;

Oracle 子查询和组函数练习

6、找出每个部门的最高和最低工资

SELECT deptno, MAX(sal) AS 最高工资, MIN(sal) AS 最低工资
FROM emp
GROUP BY deptno;

Oracle 子查询和组函数练习

7、显示出工作名称 (job) 中包含"MAN"的员工的平均工资,最高工资,最低工资及工资的和。

SELECT AVG(sal) AS 平均工资, MAX(sal) AS 最大工资
    , MIN(sal) AS 最小工资, SUM(sal) AS 工资总和
FROM emp
WHERE job LIKE '%MAN%';

Oracle 子查询和组函数练习

8、显示出 20 号部门的员工人数

SELECT deptno, COUNT(empno) AS 员工人数
FROM emp
WHERE deptno = 20
GROUP BY deptno;

Oracle 子查询和组函数练习

9、列出从事“SALES”(销售)工作的雇员的姓名,假定不知道销售部的部门编号。

SELECT ename AS 雇员姓名
FROM emp
WHERE deptno = (
    SELECT deptno
    FROM dept
    WHERE dname = 'SALES'
);

Oracle 子查询和组函数练习

10、列出薪金高于公司平均水平的所有雇员

SELECT *
FROM emp
WHERE sal > (
    SELECT AVG(sal)
    FROM emp
);

Oracle 子查询和组函数练习

11.查询与“SCOTT”在同一个部门的员工

SELECT *
FROM emp
WHERE deptno = (
    SELECT deptno
    FROM emp
    WHERE ename = 'SCOTT'
);

Oracle 子查询和组函数练习

12.查找不在销售部 (SALES) 和财务部 (ACCOUNTING) 工作的雇员编号、姓名和部门编号。

SELECT empno, ename, deptno
FROM emp
WHERE deptno NOT IN (
    SELECT deptno
    FROM dept
    WHERE dname = 'ACCOUNTING'
        OR dname = 'SALES'
);

Oracle 子查询和组函数练习

13.在 EMP 表中,找出每个超过他所在部门平均工资的员工编号,员工名称,薪水和部门编号。

SELECT empno, ename, sal, e2.deptno
FROM emp e1, (
        SELECT deptno, AVG(sal) AS avgsal
        FROM emp
        GROUP BY deptno
    ) e2
WHERE e1.deptno = e2.deptno
    AND sal > avgsal;

Oracle 子查询和组函数练习

14、列出某些雇员的姓名和薪金,条件是他们的薪金等于部门 30 中任何一个雇员的薪金。

SELECT ename, sal
FROM emp
WHERE sal = ANY (
    SELECT sal
    FROM emp
    WHERE deptno = 30
);

SELECT ename, sal
FROM emp
WHERE sal IN (
    SELECT sal
    FROM emp
    WHERE deptno = 30
);

Oracle 子查询和组函数练习

15、列出各个部门 MANAGER(经理)的最低薪金

SELECT deptno, MIN(sal)
FROM emp
WHERE job = 'MANAGER'
GROUP BY deptno;

Oracle 子查询和组函数练习

相关文章: