首页 > 数据库 >力扣180(MySQL)-连续出现的数字(中等)

力扣180(MySQL)-连续出现的数字(中等)

时间:2023-03-12 18:34:34浏览次数:67  
标签:count 数字 lead MySQL 力扣 180 表中 默认值 字段名

题目:

编写一个 SQL 查询,查找所有至少连续出现三次的数字。

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

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

 解题思路:

原表数据:

 方法一:

使用内连接(inner join)来解决,将三个表进行连接,在连接时,只有存在于连接标准相匹配的数据才会被保留下来。通过id+1的方式查找下一次出现的数字,通过id+2的方式查找下下次出现的数字,如果下次和下下次出现的数字相同,就满足条件。

①将下次和下下次出现的数字,放在同一个表中。

②加上筛选条件,三个表中的数字相等

 ③修改Select后面输出的字段,只用输出Num。

方法二:

参考猴子老师的题解:(点一下跳转)

①先使用窗口函数lead()查找当id按升序排列时的num值。

 ②再使用where查找出三个值都相同的行

小知识:

①窗口函数lead()和lag():

向上窗口函数lead:取出字段名所在的列,向上N行的数据,作为独立的列

lead(字段名,N,默认值) over(partion by …order by …)

向下窗口函数lag:取出字段名所在的列,向下N行的数据,作为独立的列

lag(字段名,N,默认值) over(partion by …order by …)

默认值是指,当向上N行或者向下N行值时,如果已经超出了表行和列的范围时,会将这个默认值作为函数的返回值,若没有指定默认值,则返回Null。

②(本题没有用)count(1)count(*) 在 SQL 中都可用来计算表中的行数。但是它们有一些细微的差别:

  • count(1) 是统计非 NULL 值的行数。
  • count(*) 是统计所有行的行数, 包括 NULL 值。

在大多数情况下,count(1)count(*) 的结果是一样的。但是如果表中有很多 NULL 值,那么两个函数的结果就会不同。 建议使用 count(1) 更加贴近需求且效率较高,而 count(*) 更加保险。

 

标签:count,数字,lead,MySQL,力扣,180,表中,默认值,字段名
From: https://www.cnblogs.com/liu-myu/p/17202913.html

相关文章

  • mysql数据库系统
    数据库的概念:数据库就是一个运行在系统上的软件,用于存储用户个人信息、用户的游戏资料等数据库是多个表的集合,是存储数据的仓库,以一定的组织方式存储的相互有关的数据数据库......
  • 【项目实战】基于Python+Django+MySQL的新闻发布系统(附完整源码)
    1、项目说明基于python+Django+Mysql的新闻发布系统项目实战项目需要安装pycharm专业版以及MySQL环境(环境搭建和破解可以看我的B站里的视频有讲解)首先需要创建数据库数......
  • mysql优化
    mysql使用总结针对字段判断casewhen字段判断then使用示例#建表语句CREATETABLE`user`(`id`int(255)NOTNULL,`name`varchar(255)DEFAULTNULL,`ag......
  • 【项目实战】基于Python+Django+MySQL的音乐网站系统(附完整源码)
    1、项目说明基于python+Django+Mysql的音乐网站系统项目实战项目需要安装pycharm专业版以及MySQL环境(环境搭建和破解可以看我的B站里《python环境配置》的视频里有讲解)......
  • 【项目实战】基于Python+Flask+MySQL的在线笔记管理系统
    1、项目说明基于python+Flask+mysql的在线笔记管理系统项目实战项目需要安装pycharm专业版,mysql数据库以及项目所需的所有模块创建数据库名称db_online_notes,然后执行sq......
  • MySQL中的函数
    1.函数函数与存储过程一样,也是一组预先编译好的SQL语句的集合,理解为批处理语句。将实现某个功能的一段代码封装起来,只暴露名字,隐藏具体实现过程。函数与存储过程的......
  • MySQL8中如何估算redo日志的大小
    先说公式:mysql>pagergrepsequence;showengineinnodbstatus\Gselectsleep(60);showengineinnodbstatus\Gnopager;mysql>select(<second_value>-<firs......
  • MySQL报Got timeout writing communication packets错误
    应用日志显示连接数据库超时,查看MySQL的错误日志,发现大量的如下错误:2023-02-14T14:19:48.330743+08:00696688[Note][MY-010914][Server]Abortedconnection696688......
  • mysql-connector-java版本大于5,项目启动连接数据库报错
    项目启动连接数据库报错如下2023-02-0822:44:23.491ERROR23596---[reate-951000054]com.alibaba.druid.pool.DruidDataSource:createconnectionSQLException,......
  • mysql数据库binlog日志太大解决办法
    解决办法一:1.在mysql中修改查看binlog过期时间,这个值默认是0天,也就是说不自动清理,可以根据生产情况修改,目前环境是设置的60天。showvariableslike‘expire_logs_days......