自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(123)
  • 问答 (10)
  • 收藏
  • 关注

原创 HIVE SQL建表常用数据类型一览

decimal(11,2) 代表最多有11位数字,其中后2位是小数,整数部分是9位;如果整数部分超过9位,则这个字段就会变成null;如果小数部分不足2位,则后面用0补齐两位,如果小数部分超过两位,则超出部分四舍五入。decimal不指定位数,默认是 decimal(10,0),整数10位,没有小数.

2023-11-23 14:43:58 318

原创 HIVE SQL时间函数

输出:2023-11-23 11:31:31.531。输出:2023-11-23 11:36:38。输出:1700710598。输出:1700710598。输出:2023-11-26。输出:2023-11-20。

2023-11-23 13:49:49 897

原创 HIVE SQL 判断空值函数

coalesce()支持三个及三个以上字段的空值判断;nvl()仅支持两个。

2023-11-23 11:24:07 778

原创 HIVE SQL取整函数汇总

向零取整,即向接近零的方向取整。int(5.6)输出:5int(-5.6)输出:-5。

2023-11-23 11:14:28 825 1

原创 HIVE SQL regexp_extract和regexp_replace配合使用正则提取多个符合条件的值

平凡的世界》评分不错,《巴黎圣母院》改变成的电影不错,还有也蛮好看。《平凡的世界》评分不错,《巴黎圣母院》改变成的电影不错,还有《1984》,《平凡的世界》,《巴黎圣母院》,《1984》时的值,此操作的主要目的为剔除最后一个书名号。函数将以上文本中所有书籍名称都提取出来?将书名号前边的内容替换成。

2023-09-28 15:55:54 1707

原创 HIVE SQL通过Lateral View + explode实现列转行

注:explode函数:处理map结构的字段,将数组转换成多行,所以此处使用了split函数将b列转为array数组类型。

2023-08-15 18:28:07 686

原创 HIVE SQL实现分组字符串拼接concat

3.如果在分组拼接的时候需要保持拼接结果为有序排序,可以通过以下两种方式。1.concat_ws+collect_list 非去重拼接。2.concat_ws+collect_set 去重拼接。函数实现分组字符串拼接,在HIVE SQL中可以使用。2)sort_array()函数升序排列。在Mysql中可以通过。函数实现相同的效果。

2023-08-15 16:41:22 2569

原创 SQL中count()的不同用法

统计所有列的行数,包括均为null值的行;:统计所有列的行数,包括均为null值的行;:统计指定列的行数,不包括null值;

2023-08-15 13:49:31 1311

原创 HIVE SQL几种不同的分组排序函数比较

通过以上三种实例演示,发现row_number()不存在相同位次的情况,即使值大小一致,但在排序的时候,也会顺延往下一位。rank()若存在相同位次,下一个位次的计算会跳过之后的位次。dense_rank()若存在相同位次,下一个位次的计算不会跳过之后的位次,即虽然存在相同位次的情况,但是位次是连续不间断的。

2023-07-18 15:29:49 336

原创 HIVE SQL 根据主键去重并实现其余字段分组聚合

注意:此处是取的首个不为空(即不为null)的字段,所以在实际使用过程中应提前将空字符串转为null值。

2023-07-18 11:36:06 2172

原创 HIVE SQL实现通过两字段不分前后顺序去重

1.通过常规的分组排序/分组去重,该种方式去重时考虑了前后顺序,无法满足要求。2.分组排序是将分组前后顺序统一。

2023-07-18 10:40:17 694 1

原创 HIVE SQL中引用参数的使用

在一些脚本中,参数的使用可以使得语句更加灵活,易于维护和修改。step2:在SQL语句中引用参数。step2:在SQL语句中引用参数。step2:在SQL语句中引用参数。step1:定义参数。step1:定义参数。step1:定义参数。

2023-07-17 15:53:56 498

原创 HIVE SQL中替换不可见字符的正则表达式

正则进行替换后,仍旧出现字符串中存在不可见字符的情况。这往往是因为上有数据在解析过程中未将无法解析的非法字符剔除掉。表示匹配任何空白字符,包括空格、制表符、换页符等等, 等价于[ \f\n\r\t\v]。这个时候通常会使用正则表达式来替换字符串中的空白字符。函数,但是他们无法去除字符串中间的空格。对于剔除字符串首尾的空格,使用较多的是。在实际清洗过程中,发现即使使用了。进一步对不可见字符进行处理。

2023-07-17 14:48:36 1773

原创 HIVE SQL计算一组值的中位数

hive sql两种方式求百分位数

2022-11-02 00:19:55 2052 1

原创 HIVE SQL使用regexp_replace正则替换敏感身份证信息

hql 使用正则替换敏感身份证号信息

2022-08-22 23:40:53 1878

原创 HIVE SQL中CASE WHEN不支持子查询的解决方法

HIVE SQL CASE WHEN不支持where 子查询的解决方式

2022-07-18 23:49:40 2917

原创 HIVE SQL 多行转多列&多列转多行

目录多行转多列多列转多行多行转多列#创建新表create table t1(a integer comment "年份",b string comment "部门",c integer comment "绩效得分");#向表中插入数据insert into t1(a,b,c)values(2014,"B",9),(2015,"A",8),(2014,"A",10),(2015,"B",7);表预览如下:现需要将该表多行转多列,转后的效果如下:实现代码:selectt1.

2022-03-10 18:40:38 2939

原创 HIVE SQL DDL&DML语句实例

目录更改列的数据类型更改列的数据类型#将class列数据类型更改为stringalter table student.classchange class class string;

2022-03-10 13:22:05 2094

原创 Python pandas在源数据中标记重复记录

现在有一份订单源数据,是从各位业务人员处搜集整合而来。由于有的业务人员给的订单数据会出现重合的部分,需要将该部分的重复记录在源数据中标记出来,由业务人员确认后,删除该部分的重复记录,以得到最终准确的订单源数据用于后续的订单统计。源数据样例如下,其中订单id、用户id、国条码、购买数量四个组合字段可作为一行记录的唯一标识。第一步:读取数据import pandas as pdfile_path=r"E:\临时\20220214\临时.xlsx"data=pd.read_excel(file_pat

2022-02-15 15:55:04 3969

原创 Python Pandas连接Mysql数据库并向表中新增行记录及查询记录

from sqlalchemy import create_engineimport pymysqlengine=create_engine(r"mysql+pymysql://root:[email protected]:3301/database_name")#root:[email protected]:3301/database_name 用户名:密码@ip地址:端口号/表名称data_sale.to_sql('table_name_1',engine,if_exists=

2022-01-26 16:35:43 2026

原创 Python pandas一行代码实现分组非重复计数

上表data是销售记录表,现需要统计每个省份的动销的门店数量。import pandas as pddata.groupby([“省份”]).agg()

2022-01-08 21:08:33 1741

原创 Python正则表达式之提取指定字符串内容后的数值

需求:提取散装商品斤重统计表格中describe列中高值、高高值、中值的斤重describe列样例如下,高值、高高值、中值分别对应不同的价格分类,我们需要提取不同价格的斤重,以计算总的销售额。如果只是几行这样的记录,直接人工提取就很方便了。样例中可以看出高值3斤,高高值2斤,中值1斤。但是如果有很多这样的行记录,人工取值在这里显然是行不通了,这里考虑使用正则表达式模糊匹配后来提取数值。这里需要提醒的一项是,每行记录不一定三种值的斤重都存在,有可能仅存1种或者2种值的斤重,但不同价格分类只会对应一个斤重。

2022-01-08 20:42:55 9039

原创 Mysql-按照指定的约束新建一张表

建表要求如下:create table user_info_vip(id int(11) NOT NULL AUTO_INCREMENT COMMENT "自增ID",uid int(11) NOT NULL COMMENT "用户ID",nick_name varchar(64) COMMENT "昵称",achievement int(11) default 0 COMMENT "成就值",level int(11) COMMENT "用户等级",job varchar(32) COM

2021-12-16 17:05:23 357

原创 Mysql-计算两个时间之间的差值

计算两个时间之间的差值1.datediff()计算date差值2.timediff()计算时分秒差值3.timestampdiff()计算指定维度的时间差值1.datediff()计算date差值语法:datediff(end_time,start_time),返回end_time-start_time的日期差值select datediff('2020-01-04 22:11:12','2020-01-02 23:11:12') from dual返回值:22.timediff()计算时分秒差

2021-12-16 15:42:37 13743

原创 Mysql-replace into与insert into的区别

1.insert into用于向表中插入行记录#向examination_info表中插入一行记录,此处如果表中已有key为9003的记录,该插入操作将执行失败insert into examination_info values(null,9003,'SQL','hard',90,'2021-01-01 00:00:00')2.replace into用于向表中带更新地插入(replace into 检测到主键或唯一性索引键重复就删除原记录后重新插入)法一:#无论表中是否已有有key为

2021-12-16 13:54:02 873

原创 Mysql-date_format()各参数实例

1."%Y/%M/%D"select date_format("2021/9/1 22:11:12","%Y/%M/%D") from dual输出:2021/September/1st2."%y/%m/%d"select date_format("2021/9/1 22:11:12","%y/%m/%d") from dual输出:21/09/013."%H:%i:%s"select date_format("2021/9/1 22:11:12","%H:%i:%s") from dua

2021-12-16 12:02:37 855

原创 Mysql-使用avg()与if()函数计算正确率

计算上表中不同难度的题目答题准确率。selectq.difficult_level,avg(if(q.result="right",1,0)) correct_rate#此处平均值计算结果=正确的题目数量/总答题数量from question_detail qgroup by q.difficult_level

2021-12-16 11:14:14 2429 2

原创 Tableau作图之通过参数实现维度切换

以Tableau自带的超市数据源为例,通过设置参数可以实现在同一个工作表中切换维度显示图表。步骤一:创建参数步骤二:设置参数

2021-12-10 17:33:55 969

原创 Tableau作图之空心环形图

在Tableau中作饼图很容易,使用系统自带的智能推荐图形即可。以Tableau中超市数据源为例,我们先来做一个区域销售额占比的饼图。接下来我们将这个饼图改造成一个空心环形图。S1.行上新增0,形成0轴S2,复制行上的0S3.将下边的圆环标记卡里的胶囊全部拖走,并将填充颜色设置为白色S4.调整上下两个饼的大小,确保上边的饼比下边的饼大S5.右击第二个0元素,设置双轴,这样我们就得到了一个空心环形占比图。...

2021-11-18 18:20:38 671

原创 Python pandas groupby函数给用户贴商品标签

在以上订单表中,需要给每位用户贴上购买的商品名称标签和总的实付款金额标签。这里需要注意的是如果某位用户多次购买同一商品,标签中只需要保留一次该商品名称。下面通过pandas 的groupby函数实现该效果。#订单数据读取import pandas as pdimport numpy as npfile_path=r"E:\临时\20211118\订单数据.xlsx"data=pd.read_excel(file_path)#订单数据前5行打印data.head()#通过grou.

2021-11-18 14:08:27 996

原创 Python pandas使用pivot_table时由于index存在nan值,导致该行记录未被记录

Python pandas 的pivot_table可以实现与Excel透视表类似的效果,但是如果index参数列中存在Nan值,就会导致改行记录不被计入。result=data.pivot_table(index=["商家名称","月份","活动类型","满减门槛","满减金额"],values=["补贴金额","原价"],aggfunc={"补贴金额":np.sum,"原价":np.sum}).reset_index()#因满减门槛及满减金额存在Nan值,导致pivot_table的结果并不准确目

2021-11-18 11:22:07 2134

原创 Mysql-使用row_number() over()函数求每组的最低分

之前我写过不用函数求分组后每组销量前两名的方法,可以参考这一篇。这种方式会稍微复杂一些。Mysql-group by分组后取每组销量前两名刷牛客网后,发现可以使用row_number() over()函数快速查出每组的最低分。select device_id,university,gpafrom (select *,row_number() over (partition by university order by gpa) as rnfrom user_profile) as univ

2021-11-05 18:27:35 471

原创 Mysql-统计用户的次日留存率

刷牛客网上遇到的一题,看了讨论区的内容,现在把自己的理解记录下来。题目要求:解题思路:1.一个用户可能一天内存在多次答题记录,以device_id,date去重select distinct q.device_id,q.datefrom question_practice_detail q2.单个用户的次日留存率假设某用户11月1日答完题后,11月2日继续登录答题,11月3日也继续登录答题。那一共可以查到3条该用户的去重记录,其中11月2日、11月3日均是次日留存记录,这里我们的次日留

2021-11-03 23:23:24 1631 1

原创 Mysql-字符串分列后取指定位置的值

如何取出上表中的性别?首先我们想到用substring_index()来进行分列#错误示例substring_index(profile,",",4)#最后取出的不是我们想要的性别,而是整个profile字段,参数4代表从左往右前4个分列的值#正确示例substring_index(profile,",",-1)#最后参数-1,代表从右往左数第一个分列的值...

2021-11-03 22:58:17 252

原创 Msql-构造当日同比日期

##当期销售金额selectSUM(ls.sale_amount) from test_sale_amount lswhere ls.order_date>="2021/11/1"and ls.order_date<=CURDATE()##同比期销售金额select SUM(ls.sale_amount) from test_sale_amount lswhere ls.order_date>="2020/11/1"and ls.order_date<=c

2021-11-03 15:55:58 85

原创 Python pandas分组后取每组排名前三的记录

源数据如上所示,需要输出每个城市销售额排名靠前的三家零售商。具体做法如下:S1:读取文件#读取源数据文件import pandas as pdfile_path=r"E:\临时\20211103\temp.xlsx"data=pd.read_excel(file_path)S2:降序排序#以城市和销售额为基准进行降序排序data_sort=data.sort_values(by=["城市","销售额"],ascending=[False,False])S3:分组后取每组排名前三的.

2021-11-03 15:44:14 7214

原创 通过批处理文件bat批量修改图片名称

预设背景:(此故事纯属虚构,如有雷同,纯属巧合)学校开学采集了一波学生照片,可是负责采集的同事在命名的时候都是用学生名字来命名(如下图所示)。但是导入系统的时候,需要通过学号来定位图片。需要将每张图片名称后边拼上该学生的学号。第一步我们需要将该文件夹下的所有图片名称都提取出来。提取步骤:1.WIN+R快捷键打开CMD2.指向该文件夹3.提取全部的图片名称,并存储至excel文件生成文件提取到的图片名称如下表所示:第二步将学号拼接至原名称拼接公式拼接效果第三步执行语句编辑

2021-10-28 16:05:14 8974 1

原创 Python pandas数据预处理之行数据复制

现有一张进货表格,数据如下,需要将商品数量与商品名称拆分,最终实现有多少个商品显示多少行数据。即当商品为“鸡蛋*5”时,需要有5条鸡蛋数据。import pandas as pdimport numpy as npfile_path=r"E:\临时\数据预处理.xlsx"data=pd.read_excel(file_path)#首先将不同商品做拆分,间隔符为","data10=data.join(data["商品"].str.split(",",expand=True))拆分后的数据如

2021-10-19 22:51:30 4345

原创 Excel作图-制作复合饼图

复合饼图如上图所示,而该图是由下图优化而来。通过设置复合饼图,我们将一些占比较小的项目以右侧矩形图显示,这样更加直观清晰。绘制步骤如下:S1.选中数据后插入复合饼图S2.设置数据系列格式参数说明:名称解释第二绘图区中的值辅助绘图区中的项目数量间隙宽度饼图与辅助图之间的距离第二绘图区大小辅助图大小S3.添加数据标签并设置数据标签格式即可完成复合饼图制作。...

2021-10-19 21:30:53 3625

原创 Mysql-查询指定表中的所有字段名称

#db_name为数据库名称,table_name为表名称SELECT COLUMN_NAME FROM information_schema.COLUMNSWHERE TABLE_SCHEMA = 'db_name' AND TABLE_NAME = 'table_name';information_schema,里面存放着所有数据库的信息(比如表名、 列名、对应权限等),更新关于information_schema的信息可参考https://blog.csdn.net/p1306252/art

2021-10-14 18:30:41 1255

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除