- 博客(47)
- 资源 (3)
- 收藏
- 关注
原创 挑战100天不停更第35天 - 数字频率的中位数(+复盘)
🌿挑战100天不停更,刷爆 hive sql🧲详情请点击🔗我的专栏🖲,共同学习,一起进步~NUM: 第35天 - 数字频率的中位数我们昨天求的是薪水的中位数,今天再补充一种求中位数的方式,昨天可以通过三种方式,具体可以参考,昨天的链接: 挑战100天不停更hive sql第34天 - 薪水求中位数先看看表字段:number :数字frequency :数字的频率(注意:这里是频率,并不是数字, 所以不能根据这个字段排序)问题:求得number的中位数(需要通过frequency 字段
2022-05-16 10:42:51
768
2
原创 挑战100天不停更hive sql第34天 - 薪水求中位数
🌿挑战100天不停更,刷爆 hive sql🧲详情请点击🔗我的专栏🖲,共同学习,一起进步~文章目录🌿挑战100天不停更,刷爆 hive sql🧲NUM: 第34天 - 薪水求中位数🧨那就不废话了, 开始今天的刷题~~🧨🎈表结构🎉建表并插入数据👓问题:查询每个公司的薪水中位数查询结果🧨SQL关于sql的规范问题NUM: 第34天 - 薪水求中位数今天的sql是求中位数, 当然,我们第一眼看到这个问题的时候我们首先想到的是开窗函数row_number()根据公司名称分区,再将薪水排序,那么中位数怎么.
2022-05-12 10:13:58
676
原创 挑战100天不停更hive sql第33天 -游戏玩家-首日连续登陆占比
🌿挑战100天不停更,刷爆 hive sql🧲详情请点击🔗我的专栏🖲,共同学习,一起进步~NUM: 第33天 -游戏玩家-首日连续登陆占比我们之前写过关于访问的统计,活跃用户的统计,以及连续出现的值等先把链接贴出来挑战100天不停更第30天 -求连续出现的值 (lead()求的偏移量,再join即可)挑战100天不停更hive sql第27天 -活跃用户统计(row_number()打标求差值,然后分组)挑战100天不停更,刷爆 hive sql第26天 - 场景题-访问统计(累计访问 .
2022-05-11 21:40:10
1171
2
原创 挑战100天不停更第32天 -行程和用戶:查询乘客取消率(包含数值运算函数总结和in 、exits、 left join的效率对比)
🌿挑战100天不停更,刷爆 hive sql🧲详情请点击🔗我的专栏🖲,共同学习,一起进步~NUM: 第32天 -行程和用戶:查询乘客取消率(包含数值运算函数总结和in 、exits、 left join的效率对比)今天的sql是通过两张表,用户表,行程表, 计算行程的取消率, 注意:这里的取消率包含乘客和司机的取消率所用到的函数包括: sum() round() if()等今天主要复习两个问题:(由于内容比较多, 我放在文章后面~)一 关于数值的函数(25个)二 使用in() exit.
2022-05-10 11:02:05
1174
原创 挑战100天不停更hive sql第31天 -温度查找
🌿挑战100天不停更,刷爆 hive sql🧲详情请点击🔗我的专栏🖲,共同学习,一起进步~NUM: 第31天 -查找比前一天温度高的所有日期的ID查找前一天的数据一般都需要用到开窗函数lag(),取窗口的前一天数据,对开窗函数lag()不清楚的可以参考之前写过的sql,还有些取值相关的挑战100天不停更hive sql第20天时间序列-补全数据(取值相关函数有详细解释)这里再详细说一下关于lag()函数的传参问题lag(col,n,DEFAULT):用于统计窗口内往上第n行值默认的DEFA.
2022-05-07 10:49:49
397
原创 挑战100天不停更hive sql第30天 -求连续出现的值
🌿挑战100天不停更,刷爆 hive sql🧲详情请点击🔗我的专栏🖲,共同学习,一起进步~NUM: 第30天 -求连续出现的值最近一直在找题, 要么题重复了(连续登陆天数,累计求值什么的,这些都比较常见的), 都是以前总结的, 要么就是要收费的,这里给大家推荐一个网站,里面的题还是不错的, 但是需要会员才可以看答案,需要进阶的可以看下http://sqlintern.com/,大家有好的学习网站或者场景题也可以在下面留言哈~ 感谢~我自己思来想去, 觉得基础还是很重要的, 更要学会举一反.
2022-05-06 23:29:47
1081
原创 挑战100天不停更hive sql-第29天 -统计充值日志-使用`with as`
🌿挑战100天不停更,刷爆 hive sql🧲详情请点击🔗我的专栏🖲,共同学习,一起进步~NUM: 第29天 -统计充值日志-使用with as今天的日志统计要用到子查询 , 在实际工作中, 为了提高sql的课阅读性, 和运行效率, 我们经常会使用with as来将一个子查询引用,今天着重介绍下 with as的使用方法** ****什么是with as ?**公用表表达式(CTE)是从WITH子句中指定的简单查询派生的临时结果集(会把查询的表数据放到内存中,供其他查询随时使用)**怎么使用呢?.
2022-04-30 13:02:33
1378
原创 挑战100天不停更hive sql第28天-场景题-图书馆
🌿挑战100天不停更,刷爆 hive sql🧲详情请点击🔗我的专栏🖲,共同学习,一起进步~NUM: 第28天 -图书馆需求现有图书管理数据库的三个数据模型如下:图书(数据表名:BOOK)读者(数据表名:READER)借阅记录(数据表名:BORROW LOG)需求:(1) 创建图书管理库的图书、读者和借阅三个基本表的表结构。请写出建表语句。(2) 找出姓李的读者姓名(NAME)和所在单位(COMPANY)。(3) 查找“高等教育出版社”的所有图书名称(BOOK_NAME)及单价(P.
2022-04-30 11:14:05
1706
原创 挑战100天不停更hive sql第27天 -活跃用户统计
🌿挑战100天不停更,刷爆 hive sql🧲详情请点击🔗我的专栏🖲,共同学习,一起进步~NUM: 第27天 -活跃用户统计今天是关于活跃用户的统计问题, 所有用户及连续登陆两天的活跃用户,所有用户的活跃度比较简单,那连续两天活跃的用户要怎么求呢 ?这道题的核心在于: 日期减去行号 -->在分组-->判断是否>=2,那么就是活跃的用户,这个思想特别重要,之前写过的还有关于求绝对值去算最接近的, 这个: 挑战100天不停更hive sql第23天 - 非等值连接-最近匹配,大.
2022-04-27 23:48:05
1193
原创 挑战100天不停更,刷爆 hive sql第26天 - 场景题-访问统计
🌿挑战100天不停更,刷爆 hive sql🧲详情请点击🔗我的专栏🖲,共同学习,一起进步~NUM: 第26天 -访问统计先说几个关键函数date_format()regexp_replace()sum() over()如果对这几个函数都比较熟悉的话,下面内容可以不用看了,嵌套个子查询就能查出来如果考虑到访问记录的去重问题:,可以参考另外一篇:挑战100天不停更hive sql第24天 -累计去重🧨刷题~~🧨🎈表结构userid:用户visitdate:日期visitcou.
2022-04-26 11:20:45
513
原创 挑战100天不停更hive sql 第25天 -场景题一 学生课程
🌿挑战100天不停更,刷爆 hive sql🧲详情请点击🔗我的专栏🖲,共同学习,一起进步~NUM: 第25天 -场景题一 学生课程最近两天天下班一直都在整理这套场景题,一共是50题,因为后面的比较简单,二十八后面的我就省略了(最后面我把问题贴出来), 表结构和数据我都写好了,可以直接复制, 由于篇幅比较长,本来我是想在前面贴导航的,但是无奈我是`markdown`,所以大家只能看边上的导航去筛选了先简单说一下吧:一共四张表, 学生 -成绩- 课程 - 老师 ,主要是用一些join,分组,排序.
2022-04-25 23:44:45
1599
原创 挑战100天不停更hive sql第24天 -累计去重
🌿挑战100天不停更,刷爆 hive sql🧲详情请点击🔗我的专栏🖲,共同学习,一起进步~NUM: 第24天 -累计去重去重? 我们一般会用到哪几个函数呢?dinstinct ``group by ``row_number()等等…那具体有什么区别呢?在实际的场景中又怎么选择呢??在数据量特别大的时候,又该如何调优呢 ?先刷题 , sql后面会细细来总结~🧨刷题~~🧨🎈表结构_1, __t24_为事件流水表,客户当天有一条记录则视为当天活跃🎉建表create .
2022-04-22 17:09:27
2530
2
原创 挑战100天不停更hive sql第23天 - 非等值连接-最近匹配
🌿挑战100天不停更,刷爆 hive sql🧲详情请点击🔗我的专栏🖲,共同学习,一起进步~NUM: 第23天 - 非等值连接-最近匹配先说几个关键的函数,同学可以先思考下~rank() ?abs() ?思考五分钟~ 然后再接着往下看吧, 或许你已经有一个大概的思路了!!最近有个小小的总结: 看sql 不如写sql,当你面对一个自己完全没有思路,然后又用尽几乎所有办法时,才会发现每一个函数都有他的妙用之处! 才能真正的学会一个函数,也许sql看似简单, 但是,当你写sql的时候才会真正关.
2022-04-21 23:09:31
571
原创 挑战100天不停更hive sql 第22天- 非等值连接-范围匹配
🌿挑战100天不停更,刷爆 hive sql🧲详情请点击🔗我的专栏🖲,共同学习,一起进步~NUM: 第22天 - 非等值连接-范围匹配表 f 是事实表,表 d 是匹配表,在 hive 中如何将匹配表中的值关联到事实表中? 表 d 相当于拉链过的变化维,但日期范围可能是不全的。那我们要怎么匹配呢??🧨不废话,刷题~~🧨🎈表结构f:d:🎉建表-- 建表并插入数据-- 事实表create table f( date_id string, p_id st.
2022-04-20 12:00:07
1578
2
原创 挑战100天不停更hive sql 第21天 - 时间序列-取最新完成状态的前一个状态
🌿挑战100天不停更,刷爆 hive sql🧲详情请点击🔗我的专栏🖲,共同学习,一起进步~NUM: 第21天 - 时间序列-取最新完成状态的前一个状态当我们看到这道题目的时候首先会想到取最新的时间,然后用lead()开窗函数向下取一行,也许还有不同的解法,虽然sql并不长,但是我觉的有点绕,自己也写了很久,这道题也是非常考察对开窗取值函数的理解,特别是开窗中嵌套开窗, 就会有点绕,思路会断开🧨不废话,刷题~~🧨🎈表结构B为完整状态,A为未完成状态🎉建表-- 建表并插入数据cr.
2022-04-19 23:30:36
523
原创 挑战100天不停更hive sql第20天时间序列-补全数据
🌿挑战100天不停更,刷爆 hive sql🧲详情请点击🔗我的专栏🖲,共同学习,一起进步~NUM: 第20天 - 时间序列-补全数据怎么理解用最新的值来进行填充呢?打个比方, 有一张账单表,2017年是收入100块钱,2018年没收入,2019年收入200块钱,那么2018年的收入就为null,但其实真实的业务可能会出现2018年的收入其实和2017年收入一样,但是默认没有入库,那么我们需要手动去填充(类似的补全操作都是一样的)那具体怎么填充呢?下面的实现通过 开窗函数count()+fi.
2022-04-18 14:59:37
1087
原创 挑战100天不停更hive sql第19天 -时间序列,求最新值
🌿挑战100天不停更,刷爆 hive sql🧲详情请点击🔗我的专栏🖲,共同学习,一起进步~NUM: 第19天 -求最新值实际工作中,随着时间的不断推移,有些字段都在不断的变化和更新,不同的字段有不同的变化,并且时间不连续,那我们具体怎么求呢?请往下看🔽🧨不废话,刷题~~🧨🎈表结构🎉建表create table t19( date_id string, a string, b string, c string.
2022-04-17 15:28:37
726
原创 挑战100天不停更hive sql第18天 - 构造累计时间
🌿挑战100天不停更,刷爆 hive sql🧲NUM: 第18天 -构造累计时间为什么会构造累计时间呢? 因为有时候表的时间字段并不是连续的,又要根据时间对其他字段进行操作,这个时候就需要手动构造时间来解决问题,思路也很简单,用炸裂函数求出连续时间,并和原来的表进行关联后,再进行开窗即可🧨不废话,刷题~~🧨🎈表结构🎉建表create table t18( a string, b string, c int);insert into t18 (a, b.
2022-04-16 10:27:31
387
原创 挑战100天不停更hive sql第17天 -时间序列,构造时间累计
🌿挑战100天不停更,刷爆 hive sql🧲NUM: 第17天 -时间进行累计时间的问题需要对时间函数掌握的很全面,并且对时间的获取和转换流程很清楚,才能游刃有余解决问题,可以根据总的需求一步步的向下推,不断的寻求每个时间的解法🧨不废话,刷题~~🧨🎈表结构🎉建表-- 时间序列,构造累计时间--建表并插入数据create table t17( date_id string);insert into t17 (date_id)values ('2017-08-0.
2022-04-15 11:06:04
415
原创 挑战100天不停更之hive sql16天-时间序列,构造时间(几乎包含所有的需要的时间)
🌿挑战100天不停更,刷爆 hive sql🧲NUM: 第16天 -构造时间马上12点了,抓住今天的小尾巴,把今天的sql更新了,今天突然通知居家办公,早上就去公司搬电脑,耽误了不少时间,但是该做的事情还是要做,把握好每一天,今天的sql主要是以时间为主,下面将每条sql进行拆解,生僻的时间函数都添加了注释和详解,希望能帮助看博客的人更好的理解~~🧨不废话,刷题~~🧨🎈先给出要求得的表结构-- 创建日期表create table if not exists dim_date( .
2022-04-14 23:39:56
605
原创 挑战100天不停更之第15天 - 时间序列,进度及剩余
🌿挑战100天不停更,刷爆 hive sql🧲NUM: 第15天 - 时间序列,进度及剩余🧨不废话,刷题~~🧨🎈表结构🎉建表create table t15( date_id string, is_work string);insert into t15 (date_id, is_work)values ('2017-07-30', '0'), ('2017-07-31', '1'), ('2017-08-01', '1'), .
2022-04-13 13:13:46
773
4
原创 K8S入门教程
目录1.Kubernetes概述1.1 Kubernetes介绍1.2 基本架构与常用术语2.Kubernetes集群2.1 环境准备与规划2.2 Master安装2.3 Node1安装2.4 Node2安装2.5 健康检查与示例测试1.Kubernetes概述1.1 Kubernetes介绍1.1.1 Kubernetes是什么及作用Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管.
2022-04-12 14:48:05
1839
原创 挑战100天不停更之hive sql第14天 -业务逻辑的分类与抽象-时效问题
🌿挑战100天不停更,刷爆 hive sql🧲NUM: 第14天 -时效问题🧨不废话,刷题~~🧨🎈表结构工作日:周一至周五 09:30-18:30日期表:客户申请表:🎉建表-- 日期表create table d_date( date_id string, is_work string);-- 客户申请表:t14create table t14( a string, b string, c string);insert in.
2022-04-12 12:52:06
1300
原创 挑战100天不停更之hive sql第13天 ~ 断点排序,抽象分组
🎈表结构🎉建表create table t13( a string, b string);insert into t13values ('2014', '1'), ('2015', '1'), ('2016', '1'), ('2017', '0'), ('2018', '0'), ('2019', '-1'), ('2020', '-1'), ('2021', '-1'),.
2022-04-11 10:35:05
668
原创 挑战100天不停更之hive sql第12天-转多行
🎈表结构🎉建表create table t12( a string, b string, c string);insert into t12values ('001', 'A/B', '1/3/5'), ('002', 'B/C/D', '4/5');👓将b和c拆分开并转多行👙输出结果🎨思路需要将两列拆分开,b、c都是多个数字,那么要先用split切分为数组通过炸裂函数explode()将b、c一行转为多行,因为是两个字段,需要.
2022-04-11 10:33:43
379
原创 hive中 Sort By,Order By,Cluster By,Distrbute By区别
order by:会对输入做全局排序,因此只有一个reducer(多个reducer无法保证全局有序)。只有一个reducer,会导致当输入规模较大时,需要较长的计算时间。 sort by:不是全局排序,其在数据进入reducer前完成排序。 distribute by:按照指定的字段对数据进行划分输出到不同的reduce中。 cluster by:除了具有 distribute by 的功能外还兼具 sort by 的功能。代码:CREATE TABLE `person`( `id` i
2022-04-09 18:30:29
599
原创 挑战100天不停更之hive sql第11天 - 成对提取数据
表结构建表create table t11( a string, b string);insert into t11values ('A/B', '1/3'), ('B/C/D', '4/5/2');1)成对提取数字并一一对应思路lateral view posexplode()展开多列输出结果SQLselect a_val, b_valfrom (select a, .
2022-04-09 14:49:14
390
原创 挑战100天不停更之hive sql第10天-反转内容
表结构建表create table t10( a string);insert into t10values ('AB,CA,BAD'), ('BD,EA');1)反转逗号分隔的数据:改变顺序,内容不变思路reverse()输出结果SQLselect a, concat_ws(',',collect_list(reverse(str)))from(select a, strfrom t10 la.
2022-04-09 13:03:14
386
原创 挑战100天不停更之hive sql第9天-合并和拆分
表结构建表create table t7( a string, b string);insert into t7values ('2014', 'A'), ('2014', 'B'), ('2015', 'B'), ('2015', 'D');1)合并思路concat_ws()SQL-- 合并select a, concat_ws(',', collect_set(b))from t7group.
2022-04-09 11:19:23
890
原创 挑战100天不停更之hive sql第8天 - 不使用 distinct 或 group by 去重
表结构建表create table t9( a string, b string, c string, d string);insert into t9values ('2014', '2016', '2014', 'A'), ('2014', '2015', '2015', 'B');1)不使用 distinct 或 group by 去重输出结果思路– 1,先将多个显示年份的列转为1列,用_union all_– 2,使用.
2022-04-09 11:15:48
588
原创 开发神器-sublime使用技巧
简介Sublime Text:一款具有代码高亮、语法提示、自动完成且反应快速的编辑器软件,不仅具有华丽的界面,还支持插件扩展机制,优雅使用Sublime Text,插件则是不可缺少的存在,用她来写代码,绝对是一种享受。安装激活官方网站下载:sublime text3;打开.exe文件进行安装,记得选择“Add to explorer context menu”,把它加入右键快捷菜单,其他默认下一步;在网上找最新的Sublime Text3激活码,如下:—– BEGIN LICENSE —–
2022-04-09 09:44:43
1319
原创 挑战100天不停更之hive sql第7天- 模拟循环操作
表结构建表create table t8( a string);insert into t8values ('1011'), ('0101');1)取出字符串中’1’的位置输出结果思路0100字符串首先要切割,获取字符串的数组炸裂函数posexplode()可以取出当前索引,然后+1再用concat_ws()拼接到一起SQLselect a, concat_ws(',', collect_list(cast(index as str
2022-04-08 12:18:28
613
原创 一次性解决datagrip连接hive报错问题
先看看具体报错使用默认的jdbc驱动报错[ 08S01] Could not open client transport with JDBC Uri: jdbc:hive2://hadoop102:10000: Could not establish connection to jdbc:hive2://hadoop102:10000: Required field 'client_protocol' is unset! Struct:TOpenSessionReq(client_proto
2022-04-07 11:23:23
11005
11
原创 挑战100天不停更之hive sql第6天 - 数据扩容和收缩
表结构1)数据的扩充(a字段不变,b字段根据a字段递减)思路通过split(space(a的最大值), ' '),计算出对应的数组将数组通过侧视图lateral view + explode炸裂函数一行转为多列通过开窗函数row_number()取出行号将原表和行号进行左外关联,条件是1=1,取出所有字段的值,并判断a字段的值大于且等于行号,就可以求出a的递减了,因为行号是从1开始的根据a分组 ,collect_set收集行号并用 concat_ws()拼接即可SQLSELE.
2022-04-06 13:14:09
514
3
原创 挑战100天不停更之hive sql第5天 - 求连续值(不借助其他表)
执行结果方法一思路根据space()获取字符串的长度,space(int i) 返回i长度的字符串,再通过split()根据字符串切割为想要的数组通过lateral view侧视图+posexplode()将行转为列,再取出对应的索引值+1即可问题:lateral view侧视图?(参考)Lateral View和**UDTF**类功能函数一起使用,表中的每一行和UDTF函数输出的每一行进行连接,生成一张新的虚拟表,可以对UDTF产生的记录设置字段名称,新加的字段可以使用在so.
2022-04-04 13:38:46
581
原创 挑战100天不停更之hive sql第4天 - 窗口大小的控制
表结构建表INSERT into t4 values('2014', 'A', 3),('2014' ,'B' ,1 ),('2014' ,'C' ,2 ),('2015' ,'A' ,4),('2015', 'D' ,3);SELECT * FROM t4;1)按a分组按照b字段排序,求c的前一行后后一行的和思路LAG(col,n,DEFAULT) 用于统计窗口内往上第n行值 第一个参数为列名,第二个参数为往上第n行(可选,默认为1),第三个参数为默认值(当往上第n行为NULL时.
2022-04-02 10:00:25
479
6
原创 挑战100天不停更之hive sql第3天- 累计求值
表结构建表CREATE table t3 like t1;INSERT into t3 values('2014', 'A', 3),('2014' ,'B' ,1 ),('2014' ,'C' ,2 ),('2015' ,'A' ,4),('2015', 'D' ,3);SELECT * FROM t3;1)按a分组,对b排序,对c进行累加思路sum(c) 开窗 partitiona 然后orderby bSQLSELECT a, b, c, .
2022-03-31 10:35:21
2861
原创 挑战100天不停更之hive sql第2天 - 排名中取它值
建表-- 表名:t2CREATE TABLE t2(a STRING,b string,c INT);-- 表结构INSERT INTO t2 values('2014','A',3),('2014','B',1),('2014','C',2),('2014','A',4),('2015','D',3);DESCRIBE t2;;INSERT INTO t1 VALUES ('2014','B',9), ('2015','A',8), ('2014','A',10), ('2015','B',7);1,多行转多列思路:年份分组,取出不同部门的绩效 年份(分组) - 部门A - 部门BSELECT a, max(CASE .
2022-03-28 18:27:39
2558
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人