logo资料库

补充版重庆邮电大学数据库实验8报告.docx

第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
资料共9页,剩余部分请下载后查看
重庆邮电大学 实验报告 班级:13061801 姓名:张川 学号:2018214201 指导老师:桑春燕 课程名称:数据与算法基础(2)(数据库) 实验地点: A501/502
实验八 综合运用数据库技术解决实际案例 一、实验目的 熟练掌握 SQL 的数据定义/数据操作/查询功能。 综合运用 SQL 处理实际问题。 二、实验要求及任务 按照“个人信息处理考查 12121.xls“中“分摊表”提供的模板统计重庆唯胜 气 象信息有限公司开展“12121”业务情况。具体如下统计规则如下: 1.数据源:共一张报表,见“个人信息处理考查 12121.xls”中“原始数据”。 2.取数规则见:“个人信息处理考查 12121.xls”中 “取数规则”工作表中,即 该 公司在不同报表中取数约定。 3.分摊表说明 1)电信产品类型分成三大类,即:固话、移动、小灵通; 2)在进行分摊表计算时,固话分摊到 “城市”或者“乡村”列小灵通分摊 到“小 灵通”列;移动分摊到“捆绑”或“未捆绑”列。 产品类型与用户类型及分摊 对应关系见表 1. 4. 完成“个人信息处理考查 12121.xls”中“分摊表”的编制。 5.总结并完成实 验报告。
三、实验步骤 1.导入数据
之后一直下一步就行。导入成功截图 (2)根据实验要求修改数据 (1) 修改原始数据表中的地区 将 xxx 电信公司修改为 xxx 比如 万州电信公司 修改为 万 州 (2) 处理不可见字符,如空格 使用 Ltrim trim Rtrim 去除 (3) 处理列数据 将用户类型 改为 相应的 小灵通,移动,固话, (4) 统计信息,将如下表填满信息 Sql 语句 (1)使用了 replace 函数替换字符串 update `原始数据` set 地区=REPLACE(地区,"电信","")
update `原始数据` set 地区=REPLACE(地区,"电信公司","") (2)处理空格 SELECT Trim(地区,城市_乡村,是否上网捆,用户类型,账目类型,接入码,用户数,话单樟张数, 通话时长,费用)FROM 原始数据 (3)处理用户类型 UPDATE 原始数据 set 用户类型="小灵通" where 用户类型 like "%小灵通" UPDATE 原始数据 set 用户类型="移动" where 用户类型 like "%卡式电话%" UPDATE 原始数据 set 用户类型="固话" where 用户类型 like "%固定电话%" update 原始数据 set 用户类型="移动" where 用户类型 like "%语音%" update 原始数据 set 用户类型="小灵通" WHERE `用户类型` like "%PHS%" (4)统计信息 1) .先建表 DROP TABLE IF EXISTS `分成前收入`; CREATE TABLE `分成前收入` ( `地区` char(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `城市` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, ` 农 村 ` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, ` 小 灵 通 ` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, ` 移 动 未 捆 绑 ` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, ` 移 动 已 捆 绑 ` varchar(10) CHARACTER SET utf8mb4 COLLATE
utf8mb4_general_ci NULL DEFAULT NULL, ` 合 计 ` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact; SET FOREIGN_KEY_CHECKS = 1; 2) .插入数据到 分成前收入 表中 insert into 分成前收入(地区) (SELECT DISTINCT 地区 from 原始数 据 ORDER BY 地区 arc); update 分成前收入 set 分成前收入.合计=(select sum(费用) from `原始数据` where 接入码="12121" and 分成前收入.`地区`=`原始数 据`.`地区` ) update 分成前收入 set 分成前收入.城市 =(select sum(`原始数据 `.`费用`) from 原始数据 where `原始数据`.地区=`分成前收入`.`地 区` and 原始数据.`城市_乡村`='城市' and `接入码`=12121 ) update 分成前收入 set 分成前收入.`农村` =(select sum(`原始数
据`.`费用`)from 原始数据 where `原始数据`.地区=`分成前收入`.`地 区` and 原始数据.`城市_乡村`='乡村' and `接入码`=12121 ) update 分成前收入 set 分成前收入.`小灵通` =(select sum(`原始 数据`.`费用`) from 原始数据 where `原始数据`.地区=`分成前收入`.` 地区` and `原始数据`.`用户类型`="小灵通" and `接入码`=12121 ) update 分成前收入 set 分成前收入.`移动未捆绑` =(select sum(` 原始数据`.`费用`) from 原始数据 where `原始数据`.地区=`分成前 收入`.`地区` and 原始数据.`是否上网捆绑`="未捆绑" and `接入码 `=12121 ) update 分成前收入 set 分成前收入.`移动已捆绑` =(select sum(` 原始数据`.`费用`) from 原始数据 where `原始数据`.地区=`分成前 收入`.`地区` and 原始数据.`是否上网捆绑`="捆绑" and `接入码 `=12121 )
四.总结 还是一些 sql 语句不好写,体验到了批量修改字符串,使用了 replace 函数。update `原始数据` set 地区=REPLACE(地区,"电 信","")将所有原始数据表中地区这一列的数据 出现电信这俩 字的,都变为空,然后只要前 2 字。这样比如万州电信公司 就 变为万州。 还使用模糊匹配批量修改字符串。UPDATE 原始数据 set
分享到:
收藏