1.求部门中哪些人薪水最高:
select ename,sal
from emp join
(
select max(sal) max_sal, deptno
from emp
group by deptno
) t
on (emp.sal = t.max_sal and emp.deptno = t.deptno);
2.求部门平均薪水的等级:
select deptno, avg_sal, grade
from
(
select deptno, avg(sal) avg_sal
from emp
group by deptno
) t join salgrade s
on (t.avg_sal between s.losal and s.hisal);
3.求部门平均的薪水等级:
select deptno, avg(grade)
from (
select deptno, ename, grade
from emp join salgrade s
on emp.sal between s.losal and s.hisal
) t
group by deptno;
4.求哪些人是经理人:
select ename from emp where empno in (select distinct mgr from emp);
5.不准用聚集函数,求薪水的最高值:
select distinct sal
from emp
where sal not in
(
select distinct e1.sal
from emp e1 join emp e2 on (e1.sal < e2.sal)
);
6.求平均薪水最高部门的部门编号:
select deptno, avg_sal
from (
select deptno, avg(sal) avg_sal
from emp
group by deptno
) where avg_sal = (
select max(avg_sal)
from (
select deptno, avg(sal) avg_sal
from emp
group by deptno
)
);
7.求平均薪水最高部门的部门名称:
select deptno,dname
from dept
where deptno = (
select deptno
from (
select deptno, avg(sal) avg_sal
from emp
group by deptno
) where avg_sal = (
select max(avg_sal)
from (
select deptno, avg(sal) avg_sal
from emp
group by deptno
)
)
);
#:聚集函数嵌套(最多只能嵌套两层):
select deptno,dname
from dept
where deptno = (
select deptno
from (
select deptno, avg(sal) avg_sal
from emp
group by deptno
) where avg_sal = (
select max(avg(sal))
from emp
group by deptno
)
);
8.求平均薪水的等级最低部门的部门名称:
select dname, t1.deptno, grade, avg_sal
from (
select deptno, grade, avg_sal
from (
select deptno, avg(sal) avg_sal
from emp
group by deptno
) t join salgrade s
on (t.avg_sal between s.losal and s.hisal)
)t1 join dept
on (t1.deptno = dept.deptno)
where t1.grade = (
select min(grade)
from (
select deptno, grade, avg_sal
from (
select deptno, avg(sal) avg_sal
from emp
group by deptno
) t join salgrade s
on(t.avg_sal between s.losal and s.hisal)
)
);
#:简化办法-创建视图:
1)create view v$_dept_avg_sal_info as
select deptno, grade, avg_sal
from (
select deptno, avg(sal) avg_sal
from emp
group by deptno
) t join salgrade s
on (t.avg_sal between s.losal and s.hisal);
2)select dname, t1.deptno, grade, avg_sal
from v$_dept_avg_sal_info t1 join dept
on (t1.deptno = dept.deptno)
where t1.grade =
(
select min(grade)
from v$_dept_avg_sal_info t2
);
3)若权限不足,则:
conn sys/密码 as sysdba;
grant create table, creat view to scott;
9.求比普通员工的最高薪水还要高的经理人名称:
select ename
from emp
where empno in (
select distinct mgr
from emp
where mgr is not null
) and sal > (
select max(sal)
from emp
where empno not in (
select distinct mgr
from emp
where mgr is not null
)
);
10. 求薪水最高的前5名雇员
select ename, sal
from
(
select ename, sal
from emp
order by sal desc
) where rownum <= 5;
11. 求薪水最高的第六到第十名雇员
select ename, sal
from (
select ename, sal, rownum r
from (
select ename, sal
from emp
order by sal desc
)
) where r >=6 and r <= 10;
12.有三个表格S,C,SC
S(SNO, SNAME) 代表(学号,姓名)
C(CNO, CNAM, CTEACHER)代表(课号,课名,教师)
SC(SNO, CNO, SCGRADE)代表(学号,课号,课号成绩)
问题:
⑴.找出没选过“liming”老师课程的所有学生姓名
select sname
from s join sc on (s.sno = sc.sno)
join c on (c.cno = sc.cno)
where c.cteacher <> 'liming';
⑵.列出两门以上(含两门)不及格学生姓名及平均成绩
select sname
from s
where sno in (
select sno
from sc
where scgrade < 60
group by sno
having count(*) >= 2
);
⑶.既学过1号课程又学过2号课程所有学生的姓名
select sno from sc where cno = 1 and
select sname
from s
where sno in (
select sno
from sc
where cno = 1 and sno in (
select sno from sc where cno = 2
)
);
分享到:
相关推荐
Oracle数据库中的多表连接是数据库...通过这些练习,我们能够掌握Oracle中的多表连接、子查询、聚合函数如`COUNT()`和`AVG()`,以及时间比较和条件过滤等高级查询技术。这些技能对于理解和处理复杂数据库查询至关重要。
oracle sql 多表连接和子查询 oracle sql 多表连接和子查询
开发者可以使用其他查询方式,例如使用子查询或 EXISTS 语句来替代多表连接查询。 6. 优化数据统计 数据统计是数据库性能的关键。开发者可以使用不同的统计方法,例如使用索引、分区表、物化视图等来提高数据统计...
### Oracle 表连接和子查询实例解析 #### 一、最大薪资部门的员工信息 **SQL语句**: ```sql SELECT ename, sal FROM emp JOIN (SELECT MAX(sal) max_sal, deptno FROM emp GROUP BY deptno) t ON (emp.sal = t....
oracle select group 子查询 表连接
本文将详细介绍 Oracle SQL 语句多表关联查询的知识点,包括字符串和数字的比较、分组查询、HAVING 子句、查询顺序、Oracle 中的伪列、子查询和表连接等。 一、字符串和数字的比较 在 Oracle 中,字符串和数字可以...
在Oracle中,连接查询和子查询以及存储过程与触发器是数据库管理与开发中的核心概念,下面将对这些主题进行深入讲解。 首先,让我们探讨**连接查询**。在数据库操作中,连接查询用于合并两个或更多表的数据,根据...
在Oracle数据库系统中,多表连接与子查询是SQL查询中的关键概念,它们允许用户从多个相关表中获取复杂的数据信息。以下是对这些概念的详细解释: 1. **多表连接**: - **等值连接(Equijoin)**:这是最基本的连接...
在Oracle数据库中,多表关联的UPDATE语句用于更新一个表中的数据,这些数据依赖于另一个或多个表的记录。这种操作在数据整合、错误修正或者数据同步时非常常见。以下我们将详细探讨如何使用不同方式执行多表关联的...
Oracle多表查询是数据库操作中常见且重要的技能,特别是在处理涉及多个数据源的复杂查询时。多表查询允许用户从两个或更多个表中合并数据,以获取更全面的信息。以下将详细介绍多表查询的基本概念、操作方法以及注意...
标题“Oracle连接查询SQL性能测试”涉及的是数据库管理和优化领域,特别是针对Oracle数据库系统的SQL查询性能分析。在Oracle中,连接查询(JOINs)是整合多个表数据的关键操作,其性能直接影响到数据库的整体效率。...
本篇将深入探讨Oracle中的多表查询技术,包括基本概念、联接类型、子查询以及高级查询技巧。 一、基本概念 1. 表关系:在数据库设计中,表与表之间可能存在一对一、一对多、多对多的关系。这些关系决定了我们需要...
例如,如果存在一个学院表TEST_DEP,包含DW_NAME、DW_CODE、YEAR和ADDR字段,我们可以用子查询来连接教师表和学院表,统计不同学院的教师信息。以下是一个例子: ```sql SELECT T1.DW_NAME, COUNT(T1.DW_NAME) AS...
在易语言中连接ORACLE数据库并进行查询报表是常见的操作,这对于数据管理和分析至关重要。ORACLE数据库作为全球知名的大型关系型数据库管理系统,广泛应用于企业和组织的数据存储与管理。 首先,你需要了解如何在...
### Oracle表空间容量查询知识点详解 #### 一、Oracle数据库中的表空间概念 在Oracle数据库中,表空间是逻辑存储单元,它将物理文件映射到数据库对象上。每个数据库至少包含一个表空间,默认情况下为SYSTEM表空间...
在这个Oracle基础练习题中,主要涉及的是多表查询,这是数据库操作中的重要技能,它可以帮助我们从多个相关的表中获取所需信息。以下是对每个练习题的详细解释: 1. 该查询通过JOIN连接`emp`和`dept`表,找出至少有...
本压缩包“ORACLE-select-query.rar”专注于讲解Oracle数据库中的查询技术,特别是多表查询、子查询以及高级子查询。下面将详细探讨这些关键知识点。 首先,基础查询SQL语句是所有数据库操作的基础,它涵盖了SELECT...
以上只是Oracle SQL多表查询和统计功能的一部分,实际使用中还有更多的复杂查询和统计技巧,例如子查询、窗口函数、集合操作等。通过持续学习和实践,你可以掌握这些技能,提高在Oracle数据库中的数据处理能力。
在Oracle中,表连接和子查询是两种关键的查询技术,用于从多个表中获取数据和执行复杂的逻辑。 首先,我们来看看表连接。表连接允许我们将两个或多个相关表的数据合并在一起,以便在一个查询中同时获取多个表的信息...
- **连接(JOIN)**:适合处理两个或更多表之间的关系,效率通常高于子查询,但结构较复杂。 在"MLDN魔乐科技JAVA培训_Oracle课堂11_子查询.wmv"这个视频课程中,你可能会学习到如何编写和理解各种类型的子查询,...