当前位置:文档之家› 数据处理试题

数据处理试题

一.不定项选择:
1.查找student表中所有电话号码(列名:telephone)的第一位为8,第三位为0的电话号码,以下SQL正确的是()
A.SELECT TELEPHONE FROM STUDENT WHERE TELEPHONE LIKE '8%0*'
B.SELECT TELEPHONE FROM STUDENT WHERE TELEPHONE LIKE '8*0%'
C.SELECT TELEPHONE FROM STUDENT WHERE TELEPHONE LIKE '8_0%'
D.SELECT TELEPHONE FROM STUDENT WHERE TELEPHONE LIKE '8_0*'
2.关于多表联接查询,以下()描述是错误的。

a.外联接查询返回的结果集行数可能大于所有符合联接条件的结果集行数。

b.多表联接查询必须使用到JOIN关键字
c.内联接查询返回的结果是:所有符合联接条件的数据。

d.在where字句中指定联接条件可以实现内联接查询。

3.现有客户表customers(主键:客户编号cid),包含10 行数据,订单orders(外键:客户编号cid),包含6条数据。

执行sql语句:select*from customers left join orders on customers.cid=orders.cid。

最多返回()条记录。

a.10
b.6
c.4
d.15
4.假定有一个用户表。

表中包含字段:userid(int).username(varchar).Password(varchar).等,每个用户由useid字段标识,该表需要设置主键,以下说法正确的是()。

A.此表设计主键时,根据选择主键的最小性原则,最好采用userid作为主键。

B.此表设计主键时,根据选择主键的最小性原则,最好采用username和password作为组合键。

C.如果采用userid作为主键,那么在userid列输入的数值,允许为空。

D.以上都不对
5.学生成绩表grade中有字段score(float),现在要把所有在55分至60之间的分数提高5分,以下SQL语句正确的是()。

a.update grade set score =score+5
b.update grade set score =score+5 where score>=55 or score<=60
c.update grade set score = score+5 where score between 55 and 60
d.update grade set score = score+5 where score >= 55 and score <= 60
二. 简答题
1. 在SQL编写过程中,NULL值的使用是需要注意的,尤其是在涉及到一些聚合函数的使用场景中,假设现在有两张表的内容如下:(25分)
表 Tbl_1
请给出以下SQL的输出结果:
问题1:
select count(col_1) from Tbl_1。

问题2:
select count(distinct col_1) from Tbl_1。

问题3:
select avg(col_1) from Tbl_1。

问题4:
select col_1 from Tbl_1 where col_1 not in (select col2 from Tbl_2)。

问题5:
select col_1 from Tbl_1 where not exist (select 0 from Tbl_2 where col_2 = col_1)。

三. 编程题
1.客户信息是企业数据资产中的重要信息之一。

先数据仓库有一张客户信息表
仓库,由数据仓库维护全量的客户信息。

具体约定规则如下:
1)吐出文件的格式与上述表结构相同,每个客户一个记录
2)增量文件中包括,新增客户与当日修改了信息的客户(修改的信息可能是出客户号之外的任何字段或字段的组合)
3)业务系统不会删除客户信息
问题1:
请给出这个客户信息表每日的增量合并到全量SQL。

假设数据已经加载到增量表
(CUST_INFO_INCR)中。

(10分)
问题2:
由于业务系统升级,所有的客户号升级为13位。

为了保证业务的连续性,业务系统给出
相应的,数据仓库也需要对客户信息进行更新。

更新规则如下:
如果在客户对照表cust_old_new里未找到对应的客户号,需将客户状态设置为失效状态。

如果在客户对照表找到对应的客户号,将
客户号修改为新的客户号。

请给出SQL语句(请用一个SQL语句实现)
2.下表是用户访问网站的日志表TRLOG,每一条记录,代表着一个平台(PLATFORM)上的一个用户(USER_ID)在某一时间(CLICK_TIME) 的每一次访问(CLICK_URL): (30分)
为了使题目叙述清晰,我们在上表中以用户12332321和32483923举例,将他们的访问按
时间排了序,但实际的访问日志不是这样有序的而是来一次访问就增加一条,平台,用户等
等都是交错的。

问日志表积攒了若干天的用户访问记录,目前大约有20亿条数据,占用存储空间1TB。


了某些分析需求,我们需要把上述数据处理为如下结构的表ALLOG:
PLATFORM和USER_ID代表平台和用户 ID;SEQ字段代表用户按时间排序后的访问顺序,FORM_URL和TO_URL分别代表用户从哪一个页面跳到哪一个页面。

对于某个平台上某一个用户的第一条访问记录其FORM_URL是null值(空值)。

问题1:
请写出转换的SQL语句。

(15分)
问题2:
分析人员想找出用户访问轨迹中,第一个URL与最后一个URL相同的用户(比如这里的用户12332321,从'/home/'开始访问,最后访问到'/home/‘
结束),请给出SQL,输出项为platform,user_id,url三项。

(15分)。

相关主题