300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 阿里云 大数据DataWorks开发套件的相关操作

阿里云 大数据DataWorks开发套件的相关操作

时间:2022-04-12 11:31:48

相关推荐

阿里云 大数据DataWorks开发套件的相关操作

目录:

前情提要:第一章第二章第三章第四章第五章第六章第七章第八章第九章测验最后测试

前情提要:

实验所需文件

第一章

关于DataWorks开发套件的简介(略)

第二章

前期准备:

--新建表yxxxCREATE TABLE IF NOT EXISTS yxxx(yxbh STRING COMMENT '院系编号',yxmc STRING COMMENT '院系名称',professionalcode BIGINT COMMENT '专业代码',professionalBIGINT COMMENT '专业名称') COMMENT '储存院系信息'LIFECYCLE 120;--新建表bjxxCREATE TABLE IF NOT EXISTS bjxx(bjbh STRING COMMENT '班级编号',bjmc STRING COMMENT '班级名称',rxrq STRING COMMENT '入学日期',yxbh STRING COMMENT '所属院系中文名称') COMMENT '录入班级信息'LIFECYCLE 120;--新建表xsxxCREATE TABLE IF NOT EXISTS xsxx(xh STRING COMMENT '学号',xm STRING COMMENT '姓名',xb STRING COMMENT '性别',bjbh STRING COMMENT '所属班级编号',rxrq STRING COMMENT '入学日期',rxcj BIGINT COMMENT '入学成绩',syd STRING COMMENT '生源地') COMMENT '录入学生信息'LIFECYCLE 120;

正文:

-- 1.查看数据表SHOW TABLES ;-- 创建班级信息临时表,临时表生命周期1天CREATE TABLE tmp_bjxs COMMENT '班级信息表(临时表)' LIFECYCLE 1AS SELECT * FROM bjxx;-- 查看班级临时信息表信息DESC tmp_bjxs;--2. 修改(重命名)表名ALTER TABLE tmp_bjxs RENAME TO tmp_bjxx;-- 运用SHOW TABLES确认修改是否成功SHOW TABLES;-- 3.修改表的注释ALTER TABLE tmp_bjxx SET COMMENT '班级信息表(临时表生命周期1天)';-- 查看tmp_bjxx(班级临时信息表)定义:DESC tmp_bjxx;-- 4.修改表“tmp_bjxx”生命周期为2天ALTER TABLE tmp_bjxx SET LIFECYCLE 2;-- 查看详细信息DESC tmp_bjxx;-- 5.修改表的最后修改时间ALTER TABLE tmp_bjxx TOUCH ;-- 查看表的定义DESC tmp_bjxx ;--6.给xsxx增加两个数据列,BIGINT型的“入学成绩”(Professionalcode)和STRING型的“生源地”(Professional)ALTER TABLE XSXX ADD COLUMNS (rxcj BIGINT COMMENT '入学成绩', syd STRING COMMENT '生源地' ) ;DESC xsxx;-- 7.修改列名:修改班级信息临时表(tmp_bjxx):列bjbh重命名为bjbh_xghALTER TABLE tmp_bjxx CHANGE COLUMN bjbh RENAME TO bjbh_xgh;DESC tmp_bjxx;-- 8.修改列的注释ALTER TABLE tmp_bjxx CHANGE COLUMN yxbh COMMENT '院系编号';-- 查看DESC tmp_bjxx;-- 9.同时修改列名和注释ALTER TABLE tmp_bjxx CHANGE COLUMN bjbh_xgh bjbh STRING COMMENT '将第一列的列名修改为原先的值';DESC tmp_bjxx;-- 10.清空数据表-- 查询tmp_bjxx表中记录数SELECT COUNT(*) FROM tmp_bjxx ;-- 清空数据表TRUNCATE TABLE tmp_bjxx;-- 查询tmp_bjxx表中记录数SELECT COUNT(*) FROM tmp_bjxx ;-- 11.删除表DROP TABLE tmp_bjxx ;-- 显示所有表SHOW TABLES; -- 12.创建视图CREATE VIEW IF NOT EXISTS view_bjxx_xsxx(bjbh,bjmc,rxrq,yxbh,xh,xm,xb)COMMENT '班级、学生信息关联'AS SELECT b.bjbh,b.bjmc,b.rxrq,b.yxbh,x.xh,x.xm,x.xbFROM bjxx bLEFT OUTER JOIN xsxx xON b.bjbh = x.bjbh;-- 13.对前面的视图进行替换操作,为每个组成列增加注释信息CREATE OR REPLACE VIEW view_bjxx_xsxx(bjbh COMMENT '班级编号',bjmc COMMENT '班级名称',rxrq COMMENT '入学日期',yxbh COMMENT '所属院系编号',xh COMMENT '学号',xm COMMENT '姓名',xb COMMENT '性别')COMMENT '班级`学生信息关联视图'AS SELECT b.bjbh,b.bjmc,b.rxrq,b.yxbh,x.xh,x.xm,x.xbFROM bjxx bLEFT OUTER JOIN xsxx xON b.bjbh = x.bjbh;-- 14.重命名视图ALTER VIEW view_bjxx_xsxx RENAME TO view_bjxx_xsxx_xgh;-- 15.删除视图DROP VIEW IF EXISTS view_bjxx_xsxx_xgh;-- 查看视图,报错找不到,即成功DESC view_bjxx_xsxx_xgh;-- 查看报错即删除成功DESC view_bjxx_xsxx_xgh;

第三章

-- 1.插入数据-- 创建表样例-- 先进行了删除表DROP TABLE temp_test_xsxx_30;CREATE TABLE IF NOT EXISTS temp_test_xsxx_30 (xh STRING COMMENT '学号',xm STRING COMMENT '姓名',xb STRING COMMENT '性别',bjbh STRING COMMENT '所属班级编号',rxrq STRING COMMENT '入学日期',rxcj BIGINT COMMENT '入学日期',syd STRING COMMENT '生源地')COMMENT '测试插入非分区表'LIFECYCLE 30;-- 向非分区表中插入2条测试数据:INSERT INTO 模式INSERT INTO TABLE temp_test_xsxx_30 VALUES ('9211271028','孙德邻','女','101050703415','1003',372,'沧州师范学院');INSERT INTO TABLE temp_test_xsxx_30 VALUES ('9002211017','田普','男','101050703925','1003',370,'衡水学院');--查看表中数据结果SELECT * FROM temp_test_xsxx_30;--查看表的详细信息DESC temp_test_xsxx_30;-- INSERT OVERWRITE模式插入数据INSERT overwrite TABLE temp_test_xsxx_30 VALUES ('8901203047','吴丹','女','101050703121','1004',369,'邯郸学院');-- 查询表数据SELECT * FROM temp_test_xsxx_30;-- 2.查询数据-- (1)查询全表数据-- INSERT INTO插入数据INSERT INTO TABLE temp_test_xsxx_30 VALUES('9108081022','单英杰','女','101050702923','1005',366,'唐山师范学院');INSERT INTO TABLE temp_test_xsxx_30 VALUES('9008216422','刘岩','男','101050703903','1007',365,'河北农业大学');INSERT INTO TABLE temp_test_xsxx_30 VALUES('9105250021','魏浩璇','女','101050703713','1007',374,'唐山师范学院');INSERT INTO TABLE temp_test_xsxx_30 VALUES('9303260027','刘海宽','男','101050703623','1004',364,'沧州师范学院');INSERT INTO TABLE temp_test_xsxx_30VALUES('9206247041','李艳玲','女','101050702901','1004',363,'沧州师范学院');INSERT INTO TABLE temp_test_xsxx_30VALUES('9107231023','崔娟','女','101050703419','1008',383,'廊坊师范学院');INSERT INTO TABLE temp_test_xsxx_30VALUES('9011133827','董莉娜','女','101050702815','1008',353,'廊坊师范学院');--读取表数据READ temp_test_xsxx_30;--(2)GROUP BY分组查询SELECT syd,AVG(rxcj) AS avg_score FROM temp_test_xsxx_30 GROUP BY syd ;--(3)ORDER BY排序查询SELECT * FROM temp_test_xsxx_30 ORDER BY rxcj DESC LIMIT 5;--(4)join查询SELECT x.xh, x.xm, x.xb, x.bjbh, x.rxrq, b.bjmcFROM xsxx x INNER JOIN bjxx bON x.bjbh = b.bjbh;

第四章

-- 1.创建表xsxwCREATE TABLE IF NOT EXISTS xsxw(xwsj STRING COMMENT '行为时间',xh STRING COMMENT '学号',xwdd STRING COMMENT '行为地点',xwdm STRING COMMENT '行为代码',bzsm STRING COMMENT '备注说明') COMMENT '学生行为信息'PARTITIONED BY(xwrq STRING COMMENT '行为日期',yxbh STRING COMMENT '院系编号')LIFECYCLE 120;-- 2.查看学生行为表定义DESC xsxw ;-- 插入分区ALTER TABLE xsxw ADD IF NOT EXISTS PARTITION (xwrq='0717',yxbh='SMGL');ALTER TABLE xsxw ADD IF NOT EXISTS PARTITION (xwrq='0718',yxbh='JGXY');-- 3.查看当前表有多少分区SHOW PARTITIONS xsxw;-- 4.查看单个分区信息DESC xsxw PARTITION (xwrq='0718',yxbh='JGXY') ;-- 5.查看分区ALTER TABLE xsxw ADD IF NOT EXISTS PARTITION (xwrq='0716',yxbh='JSJXY');READ xsxw;-- 查看导入到分区xwrq='0718',yxbh='JGXY'的数据SELECT * FROM xsxw WHERE xwrq='0718';-- 6.删除分区-- 查看分区 (IF EXISTS存在执行,不存在跳过)SHOW PARTITIONS xsxw;ALTER TABLE xsxw DROP IF EXISTS PARTITION (xwrq='0717',yxbh='SMGL');-- 7.修改分区值ALTER TABLE xsxw PARTITION (xwrq='0716',yxbh='JSJXY')RENAME TO PARTITION (xwrq='0718',yxbh='JSJXY');-- 查看SHOW PARTITIONS xsxw;-- 8.修改分区数据最后修改时间DESC xsxw PARTITION (xwrq='0718',yxbh='JSJXY');-- 修改该学生行为表的属性值ALTER TABLE xsxw TOUCH PARTITION (xwrq='0718',yxbh='JSJXY');-- 查看分区详细信息DESC xsxw PARTITION (xwrq='0718',yxbh='JSJXY');

第五章

-- 1.创建分区表CREATE TABLE csxx_ffq (rq STRING COMMENT '日期',xh STRING COMMENT '序号',sj STRING COMMENT '数据') COMMENT '测试数据(分区表)'LIFECYCLE 30;-- 这里向csxx_ffq导入一波数据,文件名为:06 非分区表插入数据-- 创建分区表CREATE TABLE csxx_fq (xh STRING COMMENT '序号',sj STRING COMMENT '数据') COMMENT '测试数据(分区表)'PARTITIONED BY (rq STRING COMMENT '日期')LIFECYCLE 30;-- 2.插入数据:多路分区方式FROM csxx_ffq INSERT OVERWRITE TABLE csxx_fq PARTITION (rq='0101')SELECT xh,sj WHERE rq='0101'INSERT OVERWRITE TABLE csxx_fq PARTITION (rq='0102')SELECT xh,sj WHERE rq='0102'INSERT OVERWRITE TABLE csxx_fq PARTITION (rq='0103')SELECT xh,sj WHERE rq='0103';-- 查看分区表(csxx_fq)的数据READ csxx_fq;-- 3.插入数据:【动态分区】方式INSERT OVERWRITE TABLE csxx_fq PARTITION(rq)SELECT xh,sj,rq FROM csxx_ffq;-- 查询数据READ csxx_fq;-- 4. 查询数据--创建学生信息表-- CREATE TABLE IF NOT EXISTS xsxx(-- xh STRING COMMENT '学号',-- xm STRING COMMENT '姓名',-- xb STRING COMMENT '性别',-- bjbh STRING COMMENT '所属班级编号',-- rxrq STRING COMMENT '入学日期'-- ) COMMENT '学生信息表' LIFECYCLE 120;-- 有些情况,需要多个查询语句返回的结果集进行合并处理SELECT * FROM (SELECT * FROM xsxx WHERE bjbh= '0101'UNION ALLSELECT * FROM xsxx WHERE bjbh= '0104') a ;-- 5.子查询--创建商品信息表CREATE TABLE IF NOT EXISTS spxx (cbbh STRING COMMENT '出版编号',spmc STRING COMMENT '商品名称',splb STRING COMMENT '商品类别',spjg DOUBLE COMMENT '商品价格',pjdj STRING COMMENT '评价等级')COMMENT '商品信息表'LIFECYCLE 120;--创建出版社信息表CREATE TABLE IF NOT EXISTS cbsxx (cbsbh STRING COMMENT '出版社编号',cbbh STRING COMMENT '出版编号',cbsmc STRING COMMENT '出版社名称',cbsj STRING COMMENT '出版时间',spmc STRING COMMENT '商品名称')COMMENT '出版社信息表'LIFECYCLE 120;--创建电商信息表CREATE TABLE IF NOT EXISTS dsxx (dsptbh STRING COMMENT '电商平台编号',dsptmc STRING COMMENT '电商平台名称',cbsmc STRING COMMENT '出版社名称',spmc STRING COMMENT '商品名称')COMMENT '电商信息表'LIFECYCLE 120;-- 这里导入三个文件,出版社信息;电商信息;商品信息。-- 通过子查询,关联三张数据表,商品信息(xpxx),出版社信息(xbsxx),电子信息表(dzxxb),进行查询。SELECT a.dsptmc, a.cbsmc, s.*FROM spxx sLEFT OUTER JOIN (SELECT d.dsptmc, c.cbsmc, c.cbbhFROM dsxx dLEFT OUTER JOIN cbsxx cON d.cbsmc = c.cbsmc) aON s.cbbh = a.cbbh;-- 6.JOIN操作-- (1)左查询SELECT a.dsptmc, a.cbsmc,s.*FROM spxx sLEFT OUTER JOIN (SELECT d.dsptmc, d.dsptbh ,c.cbsmc, c.cbbhFROM dsxx d-- LEFT 左LEFT OUTER JOIN cbsxx cON d.cbsmc = c.cbsmc) aON s.cbbh = a.cbbh;-- 用下面RIGHT OUTER JOIN可实现一样的效果,-- (2)右查询SELECT a.dsptmc, a.cbsmc,s.*FROM spxx sLEFT OUTER JOIN (SELECT d.dsptmc,c.cbsmc,c.cbbh FROM cbsxx c-- RIGHT 右RIGHT OUTER JOIN dsxx d ON d.cbsmc = c.cbsmc) a ON s.cbbh = a.cbbh;-- 7.MAPJOIN HINT 一个大表和一个或者多个小表进行join操作,这时建议使用MAPJOIN,连接的性能将会得到显著提升。-- 注意,MAPJOIN必须是小表:LEFT OUTER JOIN右面必须是小表;RIGHT OUTER JOIN左面必须是小表;INNERJOIN左右表均可以作为小表。SELECT /* + MAPJOIN(c) */c.cbsmc,s.*FROM spxx s LEFT OUTER JOIN cbsxx c ON s.cbbh = c.cbbh ;-- 8.HAVING子句:WHERE关键字无法与合计函数一起使用,可以采用having字句,查询将商品按名称分组,求各商品平均价格,查看平均价格在100元以上的商品。SELECT spmc ,AVG(spjg) FROM spxx GROUP BY spmc HAVING AVG(spjg) > 100;-- SELECT spmc ,AVG(spjg) FROM spxx GROUP BY spmc HAVING AVG(spjg) > 100 DESC LIMIT 0,10;进行降序排列,在第0排开始。

第六章

-- 1.创建测试数据表CREATE TABLE IF NOT EXISTS temp_test(id BIGINT COMMENT '序号')COMMENT '测试数据表'LIFECYCLE 120;-- 2.插入一条数据记录到测试数据表中INSERT OVERWRITE TABLE temp_test VALUES (001);DESC temp_test ;-- 3.日期函数-- (1)GETDATE:可通过这个命令获得系统当前时间。SELECT GETDATE() FROM temp_test ;-- (2)TO_CHAR:可通过这个命令将时间类型的数据转换为指定格式字符串。-- 日期转换为字符串SELECT TO_CHAR(GETDATE(),'日期函数 yyyy-mm-dd hh:mi:ss') FROM temp_test ;-- 获取当前系统时时间SELECT TO_CHAR(GETDATE(),'yyyymmddhhmiss') FROM temp_test ;-- (3)TO_DATE:可通过这个命令将字符串类型的数据转换为日期时间型数据。SELECT TO_DATE('日期函数 -05-28 01:38:06','日期函数 yyyy-mm-dd hh:mi:ss') FROM temp_test ;-- 字符串类型的数据转换为日期时间型数据SELECT TO_DATE('0528013806','yyyymmddhhmiss') FROM temp_test ;-- (4)DATEADD:进行日期加减运算。SELECT DATEADD(GETDATE(),-1,'yyyy') FROM temp_test ;--SQL1:SELECT DATEADD(DATETIME'-05-28 01:38:06',-1,'yyyy') FROM temp_test;--SQL2:SELECT DATEADD(DATETIME'-05-31 01:38:06',8,'mm') FROM temp_test;--SQL3:SELECT DATEADD(DATETIME'-05-31 01:38:06',-31,'dd') FROM temp_test;--SQL4:SELECT DATEADD(DATETIME'-05-31 01:38:06',23,'hh') FROM temp_test;--SQL5:SELECT DATEADD(DATETIME'-05-31 01:38:06',-39,'mi') FROM temp_test;--SQL6:SELECT DATEADD(DATETIME'-05-31 01:38:06',54,'ss') FROM temp_test;-- 4.DATEDIFF:进行两个日期差值计算:--SQL1:SELECT DATEDIFF(DATETIME'-05-28 01:38:06',DATETIME'-05-28 01:38:06','yyyy') FROM temp_test;--SQL2:SELECT DATEDIFF(DATETIME'-05-28 01:38:06',DATETIME'-01-31 01:38:06','mm') FROM temp_test;--SQL3:SELECT DATEDIFF(DATETIME'-05-31 01:38:06',DATETIME'-04-30 01:38:06','dd') FROM temp_test;--SQL4:SELECT DATEDIFF(DATETIME'-05-31 01:38:06',DATETIME'-06-01 00:38:06','hh') FROM temp_test;--SQL5:SELECT DATEDIFF(DATETIME'-05-31 01:38:06',DATETIME'-05-31 00:59:06','mi') FROM temp_test;--SQL6:SELECT DATEDIFF(DATETIME'-05-31 01:38:06',DATETIME'-05-31 01:39:00','ss') FROM temp_test;-- 5.ISDATE:判断字符串是否可以按指定格式转换-- 第一条语句字符串和指定日期格式可以匹配,返回trueSELECT ISDATE('-05-28 01:38:06','yyyy-mm-dd hh:mi:ss') FROM temp_test;-- 第二条语句日期格式的时分秒之间去掉了冒号分隔符,导致匹配失败,返回结果为false.SELECT ISDATE('-05-28 01:38:06','yyyy-mm-dd hhmiss') FROM temp_test; -- 6 LASTDAY:可获取当月最后一天。SELECT LASTDAY(DATETIME'-05-07 01:38:06') FROM temp_test;-- 7.DATEPART 提取日期指定部分的值--SQL1 只提取年份:SELECT DATEPART(DATETIME'-05-28 01:38:06','yyyy') FROM temp_test;--SQL2 只提取月份:SELECT DATEPART(DATETIME'-05-28 01:38:06','mm') FROM temp_test; --SQL3 只提取日:SELECT DATEPART(DATETIME'-05-28 01:38:06','dd') FROM temp_test;--SQL4 只提取小时:SELECT DATEPART(DATETIME'-05-28 01:38:06','hh') FROM temp_test;--SQL5 只提取分钟:SELECT DATEPART(DATETIME'-05-28 01:38:06','mi') FROM temp_test;--SQL6 只提取秒数:SELECT DATEPART(DATETIME'-05-28 01:38:06','ss') FROM temp_test; --8.DATETRUNC() 截取日期指定部分的值--SQL1:SELECT DATETRUNC (DATETIME'-05-28 01:38:06','yyyy') FROM temp_test;--SQL2:SELECT DATETRUNC(DATETIME'-05-28 01:38:06','mm') FROM temp_test;--SQL3:SELECT DATETRUNC(DATETIME'-05-28 01:38:06','dd') FROM temp_test; --SQL4:SELECT DATETRUNC(DATETIME'-05-28 01:38:06','hh') FROM temp_test;--SQL5:SELECT DATETRUNC(DATETIME'-05-28 01:38:06','mi') FROM temp_test; --SQL6:SELECT DATETRUNC(DATETIME'-05-28 01:38:06','ss') FROM temp_test;-- 9.FROM_UNIXTIME() 将 UNIX 时间转换为 MaxCompute 时间SELECT FROM_UNIXTIME(123456789) FROM temp_test;-- 10.TIMESTAMP() 将 MaxCompute 时间转换为 UNIX 时间SELECT UNIX_TIMESTAMP (DATETIME'-11-11 05:33:09') FROM temp_test;-- 11.WEEKDAY() 计算日期为本周第几天SELECT WEEKDAY (DATETIME'-05-28 01:38:06') FROM temp_test;-- 12.WEEKOFYEAR() 计算日期为本年第几周SELECT WEEKOFYEAR ('-10-28 01:38:06') FROM temp_test;-- 13.数学函数-- (1)ABS(): 求-100 的绝对值SELECT ABS (-100) FROM temp_test;-- (2)ROUND() 四舍五入运算SELECT ROUND (967.456,0) FROM temp_test;--结果“967.0”SELECT ROUND (967.456,1) FROM temp_test;--结果“967.5”SELECT ROUND (967.456,2) FROM temp_test;--结果“967.46-- (3)SQRT() 求 25 的算数平方根SELECT SQRT (25) FROM temp_test;--结果“5.0”-- (4)RAND() 生成 0~1 之间的随机数SELECT RAND () FROM temp_test; --结果随机“0.000471”SELECT RAND (16) FROM temp_test;--结果随机“0.549563”-- (5)POW() 次方运算SELECT POW (3,2) FROM temp_test;--结果“9.0”-- (6)LOG() 求对数SELECT LOG (10,100) FROM temp_test;--结果“2.0”-- 14.聚合函数-- 创建学生身高表CREATE TABLE temp_xssg(xh STRING COMMENT '学号',xm STRING COMMENT '姓名',xb string COMMENT '性别',bjbh STRING COMMENT '班级编号',sg double COMMENT '身高') COMMENT '学生身高表'LIFECYCLE 120;-- 查询数据条数SELECT COUNT(1) FROM temp_xssg;-- (1)COUNT():进行数据的统计运算。SELECT bjbh,COUNT(*),COUNT(sg) FROM temp_xssg GROUP BY bjbh;-- 查询身高 sg 字段的值为 null 的记录SELECT * FROM temp_xssg WHERE sg IS NULL;-- (2)MAX():就数据的最大值运算。SELECT bjbh,MAX(sg) FROM temp_xssg GROUP BY bjbh;-- (3)MIN():求数据的最小值运算。SELECT bjbh,MIN(sg) FROM temp_xssg GROUP BY bjbh;-- (4)AVG():求数据的平均值运算。SELECT bjbh,AVG(sg) FROM temp_xssg GROUP BY bjbh;-- (5)MEDIAN():求数据的中位数运算。SELECT bjbh,MEDIAN(sg) FROM temp_xssg GROUP BY bjbh;-- (6)SUM():进行求和运算。SELECT bjbh,SUM(sg) FROM temp_xssg GROUP BY bjbh;-- (7)STDDEV():计算总体标准差。SELECT bjbh,STDDEV(sg) FROM temp_xssg GROUP BY bjbh;-- (8)STDDEV_SAMP():计算样本标准差。SELECT bjbh,STDDEV_SAMP(sg) FROM temp_xssg GROUP BY bjbh;-- (9)WM_CONCAT():进行列转行运算。SELECT bjbh,WM_CONCAT(',',xm) FROM temp_xssg GROUP BY bjbh;-- 15.窗口函数-- (1)ROW_NUMBER():进行行号统计运算。SELECT ROW_NUMBER() OVER (PARTITION BY bjbh ORDER BY sg),bjbh,xh,xm,sg FROM temp_xssg;-- (2)RANK():进行排名运算。SELECT RANK() OVER (PARTITION BY bjbh ORDER BY sg),bjbh,xh,xm,sg FROM temp_xssg;-- (3)DENSE_RANK():进行连续排名计算。SELECT DENSE_RANK() OVER (PARTITION BY bjbh ORDER BY sg),bjbh,xh,xm,sg FROM temp_xssg;-- (4)PERCENT_RANK():进行一组数据中某行的相对排名运算。SELECT PERCENT_RANK() OVER (PARTITION BY bjbh ORDER BY sg),bjbh,xh,xm,sg FROM temp_xssg;-- 16.字符串函数-- (1)ASCII() 返回字符串“123”中数字“1”的 ASCII 码(返回字符串第一个字符的ASCII码)SELECT ASCII('1') FROM temp_test;-- (2)将给定的ASCII码值转换为对应的ASCII字符串。-- CHR() 获取 ASCII 码为“50”的字符串SELECT CHR(50) FROM temp_test;-- (3)获取字符串长度。-- LENGTH() 获取'你好!abcd'的字符串长度SELECT LENGTH('你好!abcd') FROM temp_test;-- (4)将大写字符串转换为小写。-- TOLOWER() 将('你好!aBcD')中的“BD”转化为小写SELECT TOLOWER('你好!aBcD') FROM temp_test;-- (5)将小写字符串转换为大写-- TOUPPER() 将('你好!aBcD')中的“ac”转化为“AC”SELECT TOUPPER('你好!aBcD') FROM temp_test;-- (6)将字符串拼接起来。-- CONCAT()将逗号分割的字符串('你好!','aBcd')进行拼接SELECT CONCAT('你好!','aBcd') FROM temp_test;-- (7)TO_CHAR():将其他类型数据转换为字符串。SELECT TO_CHAR(true) FROM temp_test;-- (8)MD5():获取相关参数的MD5值SELECT MD5('123') FROM temp_test;-- (9)去掉字符串两端的空格。-- TRIM ()去掉(‘ 123 ’)两边的空格SELECT TRIM(' 123 ') FROM temp_test;-- (10)LENGTHB():计算以字节为单位的字符串长度。SELECT LENGTHB('你好!123') FROM temp_test;-- 17.用户自定义函数

第七章

第八章

第九章

测验

第二次测验:

-- 1、通过脚本文件的形式创建一个视图,将班级信息(bjxx)和学生信息(xsxx)两张数据表关联起来,-- 得到一张“大宽表”的拼接效果。 “班级学生信息关联视图”(view_bjxx_xsxx),-- 由班级信息表(bjxx)的4个列和学生信息表(xsxx)的3个列构成;CREATE VIEW IF NOT EXISTS view_bjxx_xsxx (bjbh,bjmc,rxrq,yxbh,xh,xm,xb)COMMENT '班级、学生信息关联'AS SELECT b.bjbh,b.bjmc,b.rxrq,b.yxbh,x.xh,x.xm,x.xbFROM bjxx bLEFT OUTER JOIN xsxx xON b.bjbh = x.bjbh;DESC view_bjxx_xsxx;-- 2、向(YXXX)增加2个数据列,BIGINT型的“专业代码”(Professionalcode)和STRING型的“专业名称”(Professional)ALTER TABLE yxxx ADD COLUMNS (Professionalcode BIGINT COMMENT '专业代码',Professional BIGINT COMMENT '专业名称');DESC yxxx ;-- 3、(1)可视化创建分区表:-- 创建“学生行为表”分区表CREATE TABLE IF NOT EXISTS Student_Behavior(xwsj STRING COMMENT '行为时间',xh STRING COMMENT '学号',xwdd STRING COMMENT '行为地点',xwdm STRING COMMENT '行为代码',bzsm STRING COMMENT '备注说明') COMMENT '学生行为信息'PARTITIONED BY(xwrq STRING COMMENT '行为日期',yxbh STRING COMMENT '院系编号',xkbh STRING COMMENT '学科编号')LIFECYCLE 120;-- 查看学生行为表定义DESC xsxw ;-- (2)添加分区:分区条件“行为日期+院系编号+学科编号”,-- 其中行为日期xwrq的值为“0718”,院系编号yxbh为“'JGXY'”-- (经管学院),学科编号xkbh为“BigData”(学科编号)ALTER TABLE student_behavior ADD IF NOT EXISTS PARTITION (xwrq='0718',yxbh='JGXY',xkbh='BigData');SHOW PARTITIONS student_behavior;-- (3)调整分区表的生命周期从现在开始继续延续120天;-- 查看分区详细信息:DESC student_behavior PARTITION (xwrq='0718',yxbh='JGXY',xkbh='BigData');-- 修改该学生行为表的属性值,修改分区数据最后修改时间:ALTER TABLE student_behavior TOUCH PARTITION (xwrq='0718',yxbh='JGXY',xkbh='BigData');-- 查看分区详细信息:DESC student_behavior PARTITION (xwrq='0718',yxbh='JGXY',xkbh='BigData');

最后测试

-- 从订单表ods_market_orders中,-- 通过字段商品ID goods_id关联商品类目表ods_market_item中的商品ID goods_id,-- 控制订单时间order_time在11月1日到11月15之间,-- 按点击来源click_source分组统计订单状态pay_staus为“支付成功”的销售商品的种类数量(商品ID goods_id去重计数)、-- 商品销售金额(商品售价goods_price之和),并取出销售商品种类数据>=10种并且商品销售金额>=800的渠道列表。SELECT order_time,COUNT(DISTINCT (kinds)),SUM(goofs_price),click_sourceFROM s aJOIN ods_market_item bON a.goods_id = b.goods_idWHERE order_time BETWEEN UNIX_TIMESTAMP(DATETIME '-11-01 00:00:00')AND UNIX_TIMESTAMP(DATETIME '-11-15 00:00:00')AND kinds >= 10 AND xiaoshoue >= 800GROUP BY click_sourceAND pay_staus ='支付成功';

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。