博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode:Consecutive Numbers - 找出连续出现的数字
阅读量:7305 次
发布时间:2019-06-30

本文共 1571 字,大约阅读时间需要 5 分钟。

hot3.png

1、题目名称

Consecutive Numbers(找出连续出现的数字)

2、题目地址

3、题目内容

写一个SQL,查出表Logs中连续出现至少3次的数字:

+----+-----+| Id | Num |+----+-----+| 1  |  1  || 2  |  1  || 3  |  1  || 4  |  2  || 5  |  1  || 6  |  2  || 7  |  2  |+----+-----+

比如上表中,查出的结果是1

4、初始化数据库脚本

在MySQL数据库中建立一个名为LEETCODE的数据库,用MySQL命令行中的source命令执行下面脚本:

-- 执行脚本前必须建立名为LEETCODE的DATABASEUSE LEETCODE; DROP TABLE IF EXISTS Logs;CREATE TABLE Logs (  Id INT NOT NULL PRIMARY KEY,  Num INT);INSERT INTO Logs (Id, Num) VALUES (1, 1);INSERT INTO Logs (Id, Num) VALUES (2, 1);INSERT INTO Logs (Id, Num) VALUES (3, 1);INSERT INTO Logs (Id, Num) VALUES (4, 1);INSERT INTO Logs (Id, Num) VALUES (5, 2);INSERT INTO Logs (Id, Num) VALUES (6, 1);INSERT INTO Logs (Id, Num) VALUES (7, 2);INSERT INTO Logs (Id, Num) VALUES (8, 2);INSERT INTO Logs (Id, Num) VALUES (9, 2);

5、解题SQL

找出至少三次连续出现的数字,最简单的方法就是直接使用一套SELECT-FROM-WHERE语句一气呵成:

SELECT DISTINCT L1.NumFROM Logs L1, Logs L2, Logs L3WHERE (L1.Id = L2.Id + 1 AND L1.Num = L2.Num) AND  (L1.Id = L3.Id + 2 AND L1.Num = L3.Num)

也可以使用JOIN子句完成同样的功能:

SELECT DISTINCT L1.Num FROM Logs L1JOIN Logs L2 ON L1.Id + 1 = L2.IdJOIN Logs L3 ON L1.Id + 2 = L3.IdWHERE L1.Num = L2.Num AND L1.Num = L3.NumORDER BY L1.Num

上面两种方法可以用于找到至少三次连续出现的数字,如果将连续出现的数字扩展到N个,按照上面思路写出的SQL语句就会比较长。因此可以用下面这种方式来查询:

SELECT DISTINCT NumFROM (  SELECT Num,     CASE       WHEN @prev = Num THEN @count := @count + 1      WHEN (@prev := Num) IS NOT NULL THEN @count := 1    END CNT  FROM Logs, (SELECT @prev := NULL) X  ORDER BY Id) AS AWHERE A.CNT >= 3

将最后一行的3改为N,即可用于查询至少N次连续出现的数字。

END

转载于:https://my.oschina.net/Tsybius2014/blog/494823

你可能感兴趣的文章
《Redis设计与实现》学习笔记-发布与订阅、事务、慢查询日志
查看>>
LED显示屏成智慧城市终端应用主角
查看>>
马云谈大数据:数据时代的“五个新” 做好准备
查看>>
《请君入瓮——APT攻防指南之兵不厌诈》—第3章3.2节在网络对抗中应用CI思想...
查看>>
12 款免费的文字转语音的转换工具
查看>>
《EDIUS 6.5快刀手高效剪辑技法》——2.3 EDIUS的菜单命令
查看>>
《R语言与数据挖掘最佳实践和经典案例》—— 2.1 R数据的保存与加载
查看>>
微软全新安卓模拟器:比 Google 的还快
查看>>
《Photoshop+Lightroom数码摄影后期处理经典教程》—第1章1.4节将照片导入Lightroom...
查看>>
《AutoCAD 2013中文版从入门到精通》——1.2 设置绘图环境
查看>>
2013年Android市占率提升至79% 但增长速度变慢
查看>>
MongoDB 称正动摇 Oracle 的领先地位
查看>>
苹果新规要求开发者必须遵守广告识别符规定
查看>>
Kubernetes1.7正式发布,优化了可扩展性,安全增强和网络通信策略
查看>>
Jennifer Null —— 导致计算机出错的名字
查看>>
01_MyBatis EHCache集成及所需jar包,ehcache.xml配置文件参数配置及mapper中的参数配置...
查看>>
《Adobe Premiere Pro CS6中文版经典教程》——1.4 Adobe Premiere Pro 界面概述
查看>>
6月22日云栖精选夜读:业界首个非侵入式热修复方案Sophix重磅推出,颠覆移动端传统更新流程!...
查看>>
《Android游戏编程入门经典》——4.4节对比模拟器和Android设备
查看>>
FreeDOS 如何维持 DOS 的生命力
查看>>