🌿挑战100天不停更,刷爆 hive sql🧲
详情请点击🔗我的专栏🖲,共同学习,一起进步~
文章目录
NUM: 第30天 -求连续出现的值
最近一直在找题, 要么题重复了(
连续登陆天数,累计求值什么的,这些都比较常见的
), 都是以前总结的, 要么就是要收费的,这里给大家推荐一个网站,里面的题还是不错的, 但是需要会员才可以看答案,需要进阶的可以看下
http://sqlintern.com/,大家有好的学习网站或者场景题也可以在下面留言哈~ 感谢~
我自己思来想去, 觉得基础还是很重要的, 更要学会举一反三,只有基本功扎实了,才能在工作中游刃有余, 所以后面的题暂时以相对简单的题去复习原来写过的 , 尽量能用多种写法写出来, 然后把之前写过的再看一遍,也把链接贴出来,供大家参考
今天的题目需要用到lead()开窗函数,对这个函数不熟悉的可以参考以前的博客,放在一起看更有收获哦~
挑战100天不停更hive sql 第21天 - 时间序列-取最新完成状态的前一个状态
挑战100天不停更hive sql第20天时间序列-补全数据(取值相关函数有详细解释)
🧨那就不废话了, 刷题~~🧨
🎈表结构
🎉建表并插入数据
CREATE TABLE t31
(
id string,
num string
);
INSERT INTO t31 (id, num)
VALUES ('1', '2'),
('2', '2'),
('3', '2'),
('4', '1'),
('5', '3');
👓问题:求至少连续出现三次的数字
直接看sql吧
🧨SQL
-- 求至少连续出现三次的数字
SELECT
num
FROM (
SELECT num
, lead(num, 1, NULL) OVER (ORDER BY id) n2
, lead(num, 2, NULL) OVER (ORDER BY id) n3
FROM t31
) tmp
WHERE num = n2
AND n2 = n3;
关于sql的规范问题
- 尽量把逗号放在前面,为什么?
- 方便排查,不会遗漏逗号
- 方便注释,可以单行直接注释,不用再改逗号
- 排版看起来更紧密,我用
datagrip
快捷键ctrl + alt+ L
可以快速缩进- 特别用
datagrip
进行快速复制一行的时候,只需要Ctrl + D
不需要关注逗号,写起来很快- 使用关键字大写,养成好习惯
- 使用公用表达式
with as
,提高代码可读性和运行效率