当前位置: 首页 > news >正文

SQL-leetcode-180. 连续出现的数字

180. 连续出现的数字

表:Logs

±------------±--------+
| Column Name | Type |
±------------±--------+
| id | int |
| num | varchar |
±------------±--------+
在 SQL 中,id 是该表的主键。
id 是一个自增列。

找出所有至少连续出现三次的数字。

返回的结果表中的数据可以按 任意顺序 排列。

结果格式如下面的例子所示:

示例 1:

输入:
Logs 表:
±—±----+
| id | num |
±—±----+
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
| 5 | 1 |
| 6 | 2 |
| 7 | 2 |
±—±----+
输出:
Result 表:
±----------------+
| ConsecutiveNums |
±----------------+
| 1 |
±----------------+
解释:1 是唯一连续出现至少三次的数字。

题解

  • 连续问题
    应该想到lag、lead偏移函数,把数据进行规整打横
  • 至少连续出现三次的数字
    是不是把表通过顺序打横,错位就行?

思考:针对这类问题,你就细想,怎么实现呢?
sql又不是代码,没办法计数,还要连续,怎么办呢?起码应该想到的就是组合?
怎么组合? union、join、有没有现成的函数?也没别的方式了呀,心里kemo【模拟】一下,很显然union是不行的,只能join,咋join呢?

于是乎就想到了这2种方法:

方法一 表自关联

不是要至少连续三次吗?把连续三次的搞出来呗

表自关联三次,因为数据是有序的,那是不是把第二张表向上平移下,第三张表再向上平移下就可以了呢? 边看结果边思考,样图如下

selectl1.num as ConsecutiveNums
from logs l1 join logs l2 join logs l3
on l1.id=l2.id-1 and l2.id=l3.id-1
where l1.num=l2.num and l2.num=l3.num

在这里插入图片描述

方法二 lag、lead偏移函数

先找找定义,官网或者百度一下就清楚了,看到函数说明以后心里的石头终于落地了,太简单了吧?
lead一下抵扣咱们join三次呀,搞起搞起!!!

Lag函数:将数据向下偏移
Lag函数可以将数据向下偏移指定的行数,使得上方的数据出现空值。例如,你可以使用Lag函数来计算用户的复购间隔,或者在其他需要上下文计算的场景中使用。

语法:
Lag(expression, offset, default_value) over ()
– expression:要取的列名
– offset:取偏移后的第几行数据
– default_value:没有符合条件的默认值

🔄 Lead函数:将数据向上偏移
与Lag函数相反,Lead函数将数据向上偏移指定的行数,使得下方的数据出现空值。这种功能在处理时间序列数据或者需要前瞻性计算时非常有用。

语法:
Lead(expression, offset, default_value) over ()
– expression:要取的列名
– offset:取偏移后的第几行数据
– default_value:没有符合条件的默认值

select tmp.num as ConsecutiveNums from (select id,num,lead(num,1,null) over() as col_2,lead(num,2,null) over() as col_3from logs
) tmp where tmp.num = tmp.col_2 and tmp.num = tmp.col_3

在这里插入图片描述
在这里插入图片描述

ddl

create database test2024;
use test2024;
create table logs (id int primary key , num int);
insert into logs values(1,1),(2,1),(3,1),(4,2),(5,1),(6,2),(7,2);

万变不离其宗,高级函数只是为了让我们使用起来更方便,其实没啥了不起的,别怕,战略藐视。。。。

相关文章:

SQL-leetcode-180. 连续出现的数字

180. 连续出现的数字 表:Logs -------------------- | Column Name | Type | -------------------- | id | int | | num | varchar | -------------------- 在 SQL 中,id 是该表的主键。 id 是一个自增列。 找出所有至少连续出现三次的数字。 返回的…...

Unity中如何修改Sprite的渲染网格

首先打开SpriteEditor 选择Custom OutLine,点击Genrate 则在图片边缘会出现边缘线,调整白色小方块可以调整边缘 调整后,Sprite就会按照调整后的网格渲染了。 如何在UI中使用? 只要在UI的Image组件中选择Use Sprite Mesh 即可 结果&#xff1…...

跟着 8.6k Star 的开源数据库,搞 RAG!

过去 9 年里,HelloGitHub 月刊累计收录了 3000 多个开源项目。然而,随着项目数量的增加,不少用户反馈:“搜索功能不好用,找不到想要的项目!” 这让我意识到,仅仅收录项目是不够的,还…...

每日一题 345. 反转字符串中的元音字母

345. 反转字符串中的元音字母 简单 class Solution { public:string reverseVowels(string s) {int l 0;int r s.size() - 1;unordered_set<char> st {a,A,E,e,i,I,O,o,U,u};while(l < r){while(l<r && !st.count(s[l]) ){l;}while(l<r &&…...

Stream API 的设计融合了多个经典设计模式

Stream API 的设计融合了多个经典设计模式&#xff1a; 1. 策略模式&#xff08;Strategy Pattern&#xff09; 策略模式定义了一个算法的家族&#xff0c;将每个算法封装起来&#xff0c;并使它们可以互换。Stream API 中的每个操作&#xff08;如 filter(), map()&#xff…...

jmeter混合场景测试,设置多业务并发比例(吞吐量控制器)

jmeter混合场景测试&#xff0c;设置多业务并发比例&#xff08;吞吐量控制器&#xff09; 测试目的 为了验证需求提出的性能要求&#xff0c;结合实际可能的高压力场景&#xff0c;较全面的检测系统的性能表现。 测试方法 根据需求调研的业务模型和交易占比&#xff0c;设置不…...

直流有刷电机多环控制(PID闭环死区和积分分离)

直流有刷电机多环控制 提高部分-第8讲 直流有刷电机多环控制实现(1)_哔哩哔哩_bilibili PID模型 外环的输出作为内环的输入,外环是最主要控制的效果,主要控制电机的位置。改变位置可以改变速度,改变速度是受电流控制。 实验环境 【 !】功能简介: 按下KEY1使能电机,按下…...

vue-axios+springboot实现文件流下载

前端vue代码&#xff1a; <template><div class"app-container documentation-container"><div><el-button type"primary" click"downloadFile(test.xlsx)">下载test.xlsx</el-button></div></div> …...

selenium执行js

JS知识 获取元素 document.getElement 移除属性&#xff1a;removeAttribute("xx") 窗口移动&#xff1a;window.scrollTo(0, document.body.scrollHeight)方法 drivier.execute_script(js)场景&#xff1a; 日期选择框&#xff0c;不能输入&#xff0c;只能设置…...

每日算法Day11【左叶子之和、找树左下角的值、路径总和】

404.左叶子之和 算法链接: 404. 左叶子之和 - 力扣&#xff08;LeetCode&#xff09; 类型: 二叉树 难度: 简单 思路&#xff1a;要判断一个节点是否为左叶子节点&#xff0c;只能通过其父节点进行判断。 题解: /*** Definition for a binary tree node.* public class Tr…...

分享一下使用 AI 开发个人工具的迭代过程

分享一下使用 AI 开发个人工具的迭代过程&#xff1a;1. 找 gpt/claude 要一个 super shady coder 的人设 prompt&#xff1b;2. 简单介绍项目背景和基础需求给 gemini&#xff0c;生成最初的细化需求&#xff1b;3. 根据细化需求再次分析&#xff0c;完善边界条件&#xff0c;…...

大型语言模型(LLMs)演化树 Large Language Models

大型语言模型&#xff08;LLMs&#xff09;演化树 Large Language Models flyfish 下面的图来自论文地址 Transformer 模型&#xff08;如 BERT 和 GPT-3&#xff09;已经给自然语言处理&#xff08;NLP&#xff09;领域带来了革命性的变化。这得益于它们具备并行化能力&…...

部分背包问题

本节学习解决部分背包问题,部分背包代表物品可以按照一定比例被分割,而后放入背包内.这是十分经典的用贪心算法解决的问题. 问题描述: 给定一些物品,用matrix表示各个物品的属性,第一项表示物品的质量,第二项表示物品的总价值.现有一背包最大承重为M,试求如何让背包中所装物品…...

教师管理系统

大概功能&#xff1a; 1.显示所有教师 2.按姓名查找教师 3.按工号查找教师 4.增加教师 5.删除教师 6.退出 数据会保存到 txt 文件里面 姓名&#xff1a;必须是中文 手机号码&#xff1a;必须是11位&#xff0c;必须是数字 效果展示&#xff1a; 代码展示&#xff1a; Teache…...

Word论文交叉引用一键上标

Word论文交叉引用一键上标 1.进入Microsoft word使用CtrlH快捷键或单击替换按钮 2.在查找内容中输入[^#] 3.鼠标点击&#xff0c;标签为“替换为&#xff1a;”的文本框&#xff0c;注意光标一定要打在图红色方框圈中的文本框中&#xff01; 4.点击格式选择字体 5.勾选上标…...

集成方案 | Docusign + 蓝凌 EKP,打造一站式合同管理平台,实现无缝协作!

本文将详细介绍 Docusign 与蓝凌 EKP 的集成步骤及其效果&#xff0c;并通过实际应用场景来展示 Docusign 的强大集成能力&#xff0c;以证明 Docusign 集成功能的高效性和实用性。 在当今数字化办公环境中&#xff0c;企业对于提高工作效率和提升用户体验的需求日益迫切。蓝凌…...

Python大数据可视化:基于python大数据的电脑硬件推荐系统_flask+Hadoop+spider

开发语言&#xff1a;Python框架&#xff1a;flaskPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 管理员功能界面 价格区间界面 用户信息界面 品牌管理 笔记本管理 电脑主机…...

【递归与回溯深度解析:经典题解精讲(下篇)】—— Leetcode

文章目录 有效的数独解数独单词搜索黄金矿工不同的路径||| 有效的数独 递归解法思路 将每个数独的格子视为一个任务&#xff0c;依次检查每个格子是否合法。 如果当前格子中的数字违反了数独规则&#xff08;在行、列或 33 小方块中重复&#xff09;&#xff0c;直接返回 Fals…...

Spring boot处理跨域问题

Spring boot处理跨域问题 方案一方案二推荐解决方案注意 方案一 实现WebMvcConfigurer的addCorsMappings方法 Configuration public class InterceptorConfig implements WebMvcConfigurer {Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMappin…...

每日小题打卡

目录 幂次方 手机键盘 简单排序 校庆 性感素数 幂次方 题目描述 对任意正整数 N&#xff0c;计算 X^Nmod233333 的值。 输入格式 共一行&#xff0c;两个整数 X 和 N。 输出格式 共一行&#xff0c;一个整数&#xff0c;表示 X^Nmod233333 的值。 数据范围 1≤…...

周末高质量遛娃,你真的找对地方了吗?

“周末想高质量遛娃&#xff0c;却不知找对地方了没&#xff1f;” 周末对于家长来说&#xff0c;是陪伴孩子的黄金时间&#xff0c;都希望能给孩子一段既有趣又有意义的时光。但究竟哪里才是高质量遛娃的好去处呢&#xff1f;下面就为您详细解答。遛娃地点基础认知类Q&#xf…...

2024电子数据取证实战:从手机取证到恶意APP逆向分析

1. 手机取证实战入门&#xff1a;从ADB到蓝牙MAC地址追踪 手机取证是电子数据取证中最常见的场景之一。去年我参与处理的一起案件中&#xff0c;嫌疑人通过恶意APP窃取了受害者通讯录&#xff0c;当时就是通过ADB连接记录锁定了关键证据。先说说ADB这个基础但极其重要的工具。 …...

模拟电路经典设计解析与工程实践

1. 模拟电路设计的艺术&#xff1a;那些令人拍案叫绝的经典设计在模拟电路设计的浩瀚海洋中&#xff0c;总有一些电路设计能让人眼前一亮&#xff0c;它们或简洁优雅&#xff0c;或构思巧妙&#xff0c;或性能卓越。作为一名从业十余年的模拟电路工程师&#xff0c;我想分享几个…...

AMD Ryzen SDT调试工具:突破性实战指南,让你的处理器性能飙升200%

AMD Ryzen SDT调试工具&#xff1a;突破性实战指南&#xff0c;让你的处理器性能飙升200% 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. …...

区块链+AI的致命组合:深扒某DeFi项目的测试黑幕

在数字经济浪潮中&#xff0c;区块链与人工智能&#xff08;AI&#xff09;的融合被视为金融创新的“致命组合”&#xff0c;尤其在去中心化金融&#xff08;DeFi&#xff09;领域&#xff0c;它承诺了前所未有的效率和智能决策能力。然而&#xff0c;这一组合也带来了隐蔽的测…...

MySQL(4):事务+视图+触发器+索引+三大范式+数据库优化+数据的导入导出

文章目录一、事务二、视图三、触发器四、索引五、关系型数据库三大范式六、Mysql数据库的优化七、数据的导入和导出一、事务 1.什么是事物&#xff1f; 将一组增删改查看成一个执行单元&#xff0c;要么全成功&#xff0c;要么有一个失败&#xff0c;数据库就会回滚&#xff…...

3个高效技巧:百度网盘秒传工具实现跨平台文件管理

3个高效技巧&#xff1a;百度网盘秒传工具实现跨平台文件管理 【免费下载链接】baidupan-rapidupload 百度网盘秒传链接转存/生成/转换 网页工具 (全平台可用) 项目地址: https://gitcode.com/gh_mirrors/bai/baidupan-rapidupload 在数字化时代&#xff0c;高效文件传输…...

m4s-converter:打破B站缓存限制,永久保存珍贵视频内容

m4s-converter&#xff1a;打破B站缓存限制&#xff0c;永久保存珍贵视频内容 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 在数字内容时代&am…...

华三中小型企业二层组网配置案例一(单ISP+单链路)

1. 组网拓扑某企业内部共划分 4 个业务部门&#xff0c;为实现部门间网络隔离与安全访问控制&#xff0c;分别规划独立网段&#xff1a;192.168.10.0/24、192.168.20.0/24、192.168.30.0/24、192.168.40.0/24。核心交换机作为三层网关&#xff0c;配置各网段 VLANIF 接口地址&a…...

英雄联盟智能助手:如何在选人阶段获得不公平优势?终极指南揭秘本地化工具LeagueAkari

英雄联盟智能助手&#xff1a;如何在选人阶段获得不公平优势&#xff1f;终极指南揭秘本地化工具LeagueAkari 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League…...