2024-07-10
Learn coding
00

目录

题目描述:
示例:
思路解析:
参考代码:

题目描述:

js
表:Logs +---------------+---------+ | Column Name | Type | +---------------+---------+ | log_id | int | +---------------+---------+ id 是上表具有唯一值的列。 上表的每一行包含日志表中的一个 ID。 编写解决方案,得到 Logs 表中的连续区间的开始数字和结束数字。 返回结果表按照 start_id 排序。

示例:

js
输入: Logs 表: +------------+ | log_id | +------------+ | 1 | | 2 | | 3 | | 7 | | 8 | | 10 | +------------+ 输出: +------------+--------------+ | start_id | end_id | +------------+--------------+ | 1 | 3 | | 7 | 8 | | 10 | 10 | +------------+--------------+

思路解析:

建立中间表middle,新增一列 rnk = log_id - row_number(),因为row_number()连续编号,连接在一起的log_id与row_number()应该具有相同的差如下:

sql
log_id | rnk | diff 1 | 1 | 0 3 | 2 | 1 4 | 3 | 1 7 | 4 | 3 8 | 5 | 3

由此便有了解题思路。

参考代码:

sql
select min(log_id) start_id, max(log_id) end_id from ( select log_id, log_id - row_number() over() rnk from Logs ) middle group by rnk order by start_id
首页

PERSONAL SKILL

Proficient in Python, R, SQL, MS Office; English CET-6, can be used for meeting communication and reporting; Basic knowledge of CSS, html, JS.

WORKING EXPERIENCE

Click here to view my CV.