今日真题
题目介绍: 找到连续区间的开始和结束数字 find-the-start-and-end-number-of-continuous-ranges
难度中等
SQL架构
表:
代码语言:javascript复制Logs
代码语言:javascript复制 --------------- ---------
| Column Name | Type |
--------------- ---------
| log_id | int |
--------------- ---------
id 是上表的主键。
上表的每一行包含日志表中的一个 ID。
后来一些 ID 从
代码语言:javascript复制Logs
表中删除。编写一个 SQL 查询得到
代码语言:javascript复制Logs
表中的连续区间的开始数字和结束数字。
将查询表按照
代码语言:javascript复制start_id
排序。
查询结果格式如下面的例子:
``` 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 在表中。 ```
代码语言:javascript复制sql
SELECT
MIN(log_id) start_id,
MAX(log_id) end_id
FROM
(SELECT
log_id,
log_id - row_number() OVER(ORDER BY log_id) as diff
FROM Logs) t
GROUP BY diff
相似1225题
- 已经有灵感了?在评论区写下你的思路吧!