ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

oralce 刷题

2021-05-15 14:02:10  阅读:219  来源: 互联网

标签:oralce userid 索引 select emp where Select 刷题


(一)选择题(含单项选择和多项选择题) 每题2分,合计20分

1聚合函数max()括号里面可以填写的类型有    ABCD

A:number  B:char    C:Varchar2    D:date

2下列没有去重功能的指令有    BC

A:union     B:order by   C:union all  D:group by

3关于空值,下面哪些说法是对的  AB

A:空值跟任何值进行算术运算,得到的结果都为空值

B:空值跟任何值进行关系运算,得到的结果都为不成立

C:空值参与聚合运算会报错。

D:排序的时候,空值永远是最小的

4下列命令属于DDL指令的有  AC

A;create     B:commit    C:drop   D:delete

5 以下不是属于索引类型的是 B

A:位图索引 B:列表索引  C:唯一索引  D:范围索引

6 以下属于外键特性的是  CD

A 外键是唯一非空的

B 外键约束依赖于另外一个表的列,该列可以不是主键

C 外键删除数据必须先删除主表数据

D 外键可以保证数据的完整性

7 以下对于查询结构说明不正确的是   A

A where和having都是过滤,一个是分组前,一个是分组后

B 关键字的执行顺序为 from->where ->group by ->having->order by->select

C group by和order by 后面接的列可以是select 后面列的别名。

D 使用聚合函数必须使用group by

8 以下关于finereport说法正确的是    D

A finereport参数设置数据集参数用${}表示

B finereport设置模板参数可以不用再过滤

C finereport超链接设置需要先设置参数才有效果

D finereport可以进行权限设置

9 以下对于数据仓库描述正确的是   AC

A 数据仓库主要是面向分析的

B 数据仓库是个软件,数据不能存在oracle

C 数据仓库的架构可以为ods-dw-dm

D 解决数据同步的方法有拉链表

10 以下对于模型说法正确的是  CD

A 雪花模型的优点是没有冗余

B 星型模型和雪花模型比E-R模型好

C 星型模型是指所有维度表都跟事实表直接关联在一起的

D 雪花模型是指存在一个或者多个维度表跟事实表间接连接在一起

(二)问答题  

1   写出查询语句的语法结构、对查询关键词进行排序、对关键词进行解释。  3分

 

5 Select  列    查询列

1 From 表   获取表数据

2 Where  条件   分组前过滤表数据

3 Group by 列  分组

4 Having  分组后过滤表数据

6 Order by 列 根据列进行排序

 

2   写出TRUNCATE和DELETE和drop的区别。 3分

Drop 是删除表语句会将表结构一起删除

Truncate 是删除表数据的,先删除表,在重建表结构,无法回滚,是DDL语言,不受触发器和外键干扰

Delete  是删除表数据的DML语言,可以通过条件部分删除,可以回滚,受外键和触发器干扰,不会重置高水位

 

 

3   在emp表中查出入职时间在1981年1月1日到1983年1月1日的员工信息。 3分

Select * from emp where 时间

select *
from emp
where hiredate between to_date('1981-01-01','yyyy-mm-dd') and to_date('1981-01-03','yyyy-mm-dd');

 

 

4   用2种或者2种以上的方法(sql语句)找出EMP中的ename是A开头的。    3分

Where ename like ‘A%’

Where substr(ename,1,1)=’A’

Where instr(ename,’A’,1)=1

 

5   求出字符串dasdsw,sssdsw,dszzsad,csdwd,sdaswd 第二个到第四个,中的内容。 3分(写sql)

--方法一
select substr(a,instr(a,',',1,2)+1,instr(a,',',1,4)-instr(a,',',1,2)-1)
from (
         select 'dasdsw,sssdsw,dszzsad,csdwd,sdaswd' a
         from dual
     );
--方法二
select regexp_substr(a,'[^,]+',1,3)||','||regexp_substr(a,'[^,]+',1,4) a1
from (
         select 'dasdsw,sssdsw,dszzsad,csdwd,sdaswd' a
         from dual
     );

 

 

6   查询出emp表中的第3行和6-12行。 3分

select * from (
                  Select rownum r, emp.*
                  from emp
              )
where r=3 or r>=6 and r <=12;

 

7   利用rowid对emp表中empno和deptno值一样的行进行去重。3分

delete from EMP
where rowid not in (
    select min(rowid) from EMP
    group by EMPNO,DEPTNO
    );

 

8   求出前两个月的当月的第二天;3分

select last_day(add_months(sysdate,-3))+2  from dual;
select trunc(add_months(sysdate,-2),'mm')+1  from dual;

 

 

9   在学生表(student_1)里更改一条记录,将学号(s001)的学生性别改为男然后删除掉这条信息 (2条语句)。3分

update student_1 set sex='男' where stuno='s001';
delete from student_1 where stuno='s001';

 

(三)解答题

1 给你一份2018年8月8日的用户访问App各页面的日志流水数据(记为t_sala_log),

有userid(用户唯一标识),pageid(页面唯一标识),time(访问时间)三个字段如下;

userid    

pageid

time

10017

5001

2018-08-08 12:02:13

10101

0072

2018-08-08 15:02:13

 

问题1:如何计算当天的UV(UV是访问页面的用户数量)?(写sql) 2分

Select count(1) from (Select userid  from  t_sala_log group by userid)

 

问题2:若userid+pageid组合形成一个有效页面访问,如何计算出当天APP有多少个不重复的有效页面访问?(写sql) 3分

Select count(1)
from (
    Select userid  
    from  t_sala_log
    group by userid,pageid
    );

 

问题3:如何查询出每个人当天最后一次访问了APP哪个页面?(写sql) 5分

Select userid,pageid
From(
Select t.*,row_number  (partition by userid oder by time desc) r
From t_sala_log t
)
Where R=1;

 

2 创建存储过程,输入部门编号,输出emp表中相对应职工的员工编号、姓名、工作岗位以及部门人数;5分

create procedure sp_emp(
v_deptno number
)
as
    cursor a is
        select emp.*,count(1) over() 人数 from emp where DEPTNO=v_deptno;
begin
    for i in a loop
        DBMS_OUTPUT.PUT_LINE(i.empno||','||i.JOB||','||i.ename||','||i.人数);
        end loop;
end;
call sp_emp(10);

 

 

 

 

3 创建函数,根据给定的部门编号(提示: 利用&)计算该部门所有职工的平均工资。5分

create function fun_get_avg_sal(
v_deptno number
)return number
as
    v_avg_sal number;
begin
    select avg(sal) into v_avg_sal from emp where DEPTNO=v_deptno;
    return v_avg_sal;
end;
select empno,sal,DEPTNO,fun_get_avg_sal(DEPTNO) from emp;

 

4 求出200-900之间的全部素数,按照大小排列出来;5分

 

declare
    r number :=0;
begin
    for i  in  200..9000 loop
        for j in 2..sqrt(i) loop
            if mod(i,j)=0 then
                r:=1;
                exit;
            end if;
            end loop;
        if r=0 then DBMS_OUTPUT.PUT_LINE(i); end if;
        r:=0;
        end loop;
end;

 

 

 

 

 

 

 

 

 

 

 

 

 

(四)解答题

1  请简述索引的种类以及失效的原因;5分

种类:

按功能:位图索引,唯一索引,组合索引,函数索引

按实现:B树索引,反向键索引,哈希索引

失效的原因

  1. 全表扫描 使用了!,not等等

  2. 隐式转换,等号两边的类型不一致

  3. 列使用了函数

  4. 列进行了计算

  5. 组合索引没有带上第一列

 

 

2  请说出排序函数以及之间的区别; 4分

Row_number  1 2 3 4 5

Rank        1 2 2 4 5

Dense_rank  1 2 2 3 4

 

 

3  请说出分析方式与聚合函数的区别;4分

  1. 分析函数是用partition by分组的 聚合函数是group by分组

  2. 聚合函数 配合开窗函数 可以当做分析函数使用,加order by可以实现累计效果

  3. 分析函数 返回 原有的行数 ,聚合函数 返回聚合后的行数 

 

 

 

6  请简单描述下E-R模型和数仓模型。以及他们的区别; 4分

①E-R模型 是业务数据库设计的数据模型,通过实体进行关系映射,从而设置表结构。通常按照三范式的规则设置。数据冗余度会特别小。

②数仓模型包含了星型模型,雪花模型等,主要面向分析

其中星型模型是指所有事实表和维度表都直接关联在一起的类型,性能比较好。但是冗余比较大,扩展性也会比较差一点。设计比较简单。

其中雪花模型是指在星型的基础上,存在一个或者多个维度表跟事实表间接关联在一起。冗余比较少,但是查询性能比较慢一点。

 

7  请简述一般数据清洗,处理什么内容,以及处理的步骤 4分

答:一般对数据清洗的话,主要还是看业务需求。其中业务的异常数据,例如会员卡号不符合规则这样的数据。还有常规的异常数据,例如年龄为负的。还有一些null处理,拆分字段,合并字段,统一格式等等。通常我们会先观察数据,确定我们需要清洗的数据,然后再将数据读入到数据流中,在通过清洗处理,输出到我们 的目标表中。

标签:oralce,userid,索引,select,emp,where,Select,刷题
来源: https://www.cnblogs.com/guokaixuan/p/14771422.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有