# Write your MySQL query statement below
1285. 找到连续区间的开始和结束数字
表:Logs
+---------------+---------+ | Column Name | Type | +---------------+---------+ | log_id | int | +---------------+---------+ id 是上表具有唯一值的列。 上表的每一行包含日志表中的一个 ID。
编写解决方案,得到 Logs
表中的连续区间的开始数字和结束数字。
返回结果表按照 start_id
排序。
结果格式如下面的例子。
示例 1:
输入: Logs 表: +------------+ | log_id | +------------+ | 1 | | 2 | | 3 | | 7 | | 8 | | 10 | +------------+ 输出: +------------+--------------+ | start_id | end_id | +------------+--------------+ | 1 | 3 | | 7 | 8 | | 10 | 10 | +------------+--------------+ 解释: 结果表应包含 Logs 表中的所有区间。 从 1 到 3 在表中。 从 4 到 6 不在表中。 从 7 到 8 在表中。 9 不在表中。 10 在表中。
原站题解
mysql 解法, 执行用时: 281 ms, 内存消耗: 0 B, 提交时间: 2023-10-15 19:46:19
SELECT MIN(log_id) START_ID, MAX(log_id) END_ID FROM ( SELECT DISTINCT log_id, log_id - ROW_NUMBER() OVER ( ORDER BY log_id ASC ) reference FROM Logs ) T GROUP BY reference ORDER BY START_ID