挑战100天不停更hive sql第30天 -求连续出现的值

🌿挑战100天不停更,刷爆 hive sql🧲

详情请点击🔗我的专栏🖲,共同学习,一起进步~

NUM: 第30天 -求连续出现的值

最近一直在找题, 要么题重复了(连续登陆天数,累计求值什么的,这些都比较常见的), 都是以前总结的, 要么就是要收费的,这里给大家推荐一个网站,里面的题还是不错的, 但是需要会员才可以看答案,需要进阶的可以看下
http://sqlintern.com/,大家有好的学习网站或者场景题也可以在下面留言哈~ 感谢~

我自己思来想去, 觉得基础还是很重要的, 更要学会举一反三,只有基本功扎实了,才能在工作中游刃有余, 所以后面的题暂时以相对简单的题去复习原来写过的 , 尽量能用多种写法写出来, 然后把之前写过的再看一遍,也把链接贴出来,供大家参考

今天的题目需要用到lead()开窗函数,对这个函数不熟悉的可以参考以前的博客,放在一起看更有收获哦~
挑战100天不停更hive sql 第21天 - 时间序列-取最新完成状态的前一个状态
挑战100天不停更hive sql第20天时间序列-补全数据(取值相关函数有详细解释)

🧨那就不废话了, 刷题~~🧨

🎈表结构

image.png

🎉建表并插入数据

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的规范问题

  1. 尽量把逗号放在前面,为什么?
    1. 方便排查,不会遗漏逗号
    2. 方便注释,可以单行直接注释,不用再改逗号
    3. 排版看起来更紧密,我用datagrip快捷键ctrl + alt+ L可以快速缩进
    4. 特别用datagrip进行快速复制一行的时候,只需要Ctrl + D不需要关注逗号,写起来很快
  2. 使用关键字大写,养成好习惯
  3. 使用公用表达式 with as,提高代码可读性和运行效率

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员的三板斧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值