`
jacobcookie
  • 浏览: 94836 次
社区版块
存档分类
最新评论

ORACLE 习题之二

阅读更多

习题二
Northwind商贸公司,业务日益发展,公司OA系统正不断推出新版本以紧跟公司的发展.
在OA系统中,有一员工角色表,情况如下:
create table roles(
emp_name varchar2(20) not null,
emp_role char(1) not null,
constraint pk_roles primary key(emp_name,emp_role)
);
数据:
EMP_NAME EMP_ROLE
-------------------- --------
陈城 W
刘海 D
刘海 O
田亮 O
王晓刚 D
张玲 S
张天明 D
张天明 O

其中: W – 搬运工人 D – 主任 O – 高级职员 S – 秘书

OA开发组的SQL程序员张明得到了上级的一个任务:

领导要求得到的高级职员信息表如下:
EMP_NAME COMBINE_ROLE
-------------------- ------------
刘海 B
田亮 O
王晓刚 D
张天明 B

要求:

1)只列出主任和高级职员的信息
2)如果即是高级职员又是主任,用B表示其角色, 其它信息不用再显示 (只一条记录)。
你能不能用单条SQL语句帮助张明实现这个查询?

建表和数据录入:
create table roles(
emp_name varchar2(20) not null,
emp_role char(1) not null,
constraint PK_ROLES PRIMARY KEY (emp_name,emp_role)
);

insert into roles values('mary','W');
insert into roles values('david','D');
insert into roles values('david','O');
insert into roles values('henry','O');
insert into roles values('cherry','D');
insert into roles values('sally','S');
insert into roles values('tom','D');
insert into roles values('tom','O');
解题思路:

方法1:

先找出角色为主任和高级职员的员工,然后按员工姓名进行分组,得出有的组有2条记录,而有的组只有1条记录,接着把有2条记录的组,角色一律设置为B,对于只有一条记录,则按照其原有设置显示,但由于emp_role不是排序字段,所以增加个聚合函数max, 以保证兼容性,最后把两次查询得到的结果用union合成。

select emp_name,'B'
from roles
where emp_role in ('D','O')
group by emp_name
having count(emp_role)=2
union
select emp_name,max(emp_role)
from roles
where emp_role in ('D','O')
group by emp_name
having count(emp_role)=1;

方法二:

使用case函数。


select emp_name,
case when count(*)=1
then max(emp_role)
else 'B'
end
as combind_role--别名
from roles
where emp_role in ('D','O')
group by emp_name;

1
0
分享到:
评论

相关推荐

    适合新手的oracle练习题集合

    这个“适合新手的Oracle练习题集合”旨在帮助初学者巩固理论知识,提高实践技能,同时通过解决实际问题,如安全认证和转账问题,加深对Oracle数据库的理解。 1. **SQL基础**:在Oracle中,SQL(结构化查询语言)是...

    Oracle练习题初学者适用

    首先,我们可以从“Oracle习题”这个文件名推测,这些文档可能包含了各种类型的题目,如选择题、填空题、简答题和案例分析题等,涵盖了Oracle的基础知识和实际操作。以下是可能涉及的一些关键知识点: 1. **Oracle...

    oracle练习题 总结了一下几个经典的

    这些练习题涵盖了Oracle数据库的基本查询技巧,包括子查询、连接操作、聚合函数、条件判断以及各种内置函数的使用。通过解决这些问题,可以深入理解Oracle SQL和PL/SQL的用法,并提升在实际数据库管理中的技能。

    Oracle 练习题及答案

    根据提供的信息,我们可以总结出以下Oracle数据库练习题及其解析,主要涵盖了SQL查询、子查询、聚合函数等知识点。 ### 1. 查询所有员工的姓名和部门编号 ```sql SELECT ename, deptno FROM emp; ``` 这个查询非常...

    oracle练习题关于触发器的作业

    Oracle数据库是世界上最流行的数据库管理系统...通过解决这个"oracle练习题关于触发器的作业",你将深化对Oracle触发器的理解,并提升数据库管理技能。请仔细研究每个题目,逐步解答,不断实践,相信你会从中受益匪浅。

    oracle数据库练习题emp练习题

    根据提供的Oracle数据库练习题及其描述,我们可以逐一解析并总结出其中涉及的重要知识点: ### 一、多表查询 1. **子查询与多表连接**: - 练习题目中涉及到了`emp`表与`dept`表的关联查询。 - 例如:“获取在同...

    Oracle SQL:经典练习题(附答案)

    1. **基本查询操作**:练习题中包含了查询员工表(emp)和部门表(dept)的基础信息,例如查询所有员工的详细信息。这涉及到SELECT语句的基本用法,包括选择列(如`SELECT * FROM emp`)和指定表(如`FROM emp`)。 ...

    oracle存储过程练习题[收集].pdf

    Oracle 存储过程练习题 本文档包含五个 Oracle 存储过程练习题,涵盖了创建用户和分配权限、编写函数实现报表统计、统计成绩分布、数据导出和删除重复数据等多个方面。 1. 创建用户和分配权限 在 Oracle 中,创建...

    Oracle基础查询关联查询练习题.docx

    Oracle 基础查询关联查询练习题中第二部分是分组查询。分组查询是指将数据分组,并对每个组进行聚合操作。 1. 分组查询 第一个练习题是查询每个部门中每个职位的最高薪水。该查询使用了 GROUP BY 子句来分组,并...

    Oracle 练习题答案

    根据提供的Oracle练习题答案及其描述,我们可以逐一解析并总结出其中涉及的重要知识点: ### 1. 查询所有学生信息以及所有课程信息 ```sql select * from student; select * from course; ``` - **知识点**: `...

    oracle上机练习题

    根据提供的Oracle上机练习题的信息,我们可以从中提炼出多个重要的知识点。这些知识点涵盖了数据库的基本操作,包括表的创建、数据的插入以及基本的数据查询等。接下来将对这些知识点进行详细的阐述。 ### 1. 创建...

    oracle数据库sql练习题(含答案)

    oracle数据库sql练习题(含答案)用于练习增删改查操作。

    oracle数据库基础练习题

    本资料包含“Oracle数据库基础练习题”,旨在帮助初学者和进阶者巩固对Oracle基础知识的理解,同时也适合正在准备Oracle相关认证考试的人群。 练习题可能涵盖了以下几个核心领域: 1. **SQL语言基础**:这部分可能...

    oracle练习题.zip

    这个"oracle练习题.zip"压缩包包含了一些关于Oracle数据库操作的练习资料,主要关注查询语句和基本的数据操作。 首先,"table.sql"文件很可能是创建数据库表的SQL脚本。在Oracle中,创建表是数据库设计的基础,它...

    oracle练习题和答案.doc

    6. **SCOTT/TIGER示例数据库**:这些练习题是在Oracle的SCOTT/TIGER示例数据库上进行的,这是一个经典的用于学习Oracle SQL的数据库。`EMP`表是SCOTT用户下的一个标准示例表,包含了员工的基本信息,如员工号、姓名...

    Oracle认证介绍与练习题

    ### Oracle 认证介绍 Oracle认证是Oracle公司推出的一系列技术认证项目,旨在评估和确认IT专业人士在...以上是对Oracle认证介绍及其相关练习题的详细解释,希望能帮助到正在备考或有兴趣深入了解Oracle认证的读者。

    Oracle 入门及提高练习题

    本资源"Oracle 入门及提高练习题"旨在帮助用户从基础开始,逐步深入到高级实践,提升在Oracle领域的技能。 一、Oracle基础 1. 数据库概念:了解数据库是什么,它的作用以及Oracle数据库的特点,如ACID属性(原子性...

    各种oracle练习(习题+答案)

    首先,这些练习题可能包括了以下几个核心知识点: 1. **SQL基础**:SQL是与Oracle交互的语言,学习者需要掌握SELECT语句、JOIN操作、子查询、聚合函数如COUNT、SUM、AVG等,以及DML语句(INSERT、UPDATE、DELETE)...

    oracle sql练习题

    oracle数据库练习题,对新手有帮助,看看没有害处。

Global site tag (gtag.js) - Google Analytics