2022-11-25:连续出现的数字。编写一个 SQL 查询,查找所有至少连续出现三次的数字
2022-11-25:连续出现的数字。编写一个 SQL 查询,查找所有至少连续出现三次的数字。
答案是输出1,原因是1是唯一连续出现三次的数字。
DROP TABLE IF EXISTS logs;
CREATE TABLE logs (
id int(11) NOT NULL,
num int(11) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO logs VALUES ('1', '1');
INSERT INTO logs VALUES ('2', '1');
INSERT INTO logs VALUES ('3', '1');
INSERT INTO logs VALUES ('4', '2');
INSERT INTO logs VALUES ('5', '1');
INSERT INTO logs VALUES ('6', '2');
INSERT INTO logs VALUES ('7', '2');
答案2022-11-25:
sql语句如下:
SELECT DISTINCT
l1.num AS ConsecutiveNums
FROM
logs l1,
logs l2,
logs l3
WHERE
l1.id = l2.id - 1
AND l2.id = l3.id - 1
AND l1.num = l2.num
AND l2.num = l3.num
执行结果如下:
本作品采用《CC 协议》,转载必须注明作者和本文链接
每日一问,为嘛不用
LAG()
窗口函数呢?感觉会比两次联表快
力扣的原题,最佳解答:
这里是增加了个两个临时变量用作运算,逻辑性比较强,而且开销小。写起来不会乱,举个简单的例子,如果是连续10次,这种写法优势就很大,又比如想知道每个数字最多连续出现的次数,也只需要稍微改一下即可
最高连续出现次数: