首页 > 试题广场 >

连续出现N 次问题【举一反三】

[编程题]连续出现N 次问题【举一反三】
  • 热度指数:94 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

表: 成绩表

+-------------+---------+
| 字段名称     | 类型    |
+-------------+---------+
| 学号        | varchar |
| 成绩        | int     |
+-------------+---------+


该表的每一行表示一位学生的成绩

 

需要查找所有连续出现 3 次的成绩。

查询结果如下例所示。

 

示例 1:

输入: 表:成绩表
+---------+--------+
| 学生编号 | 分数   |
+---------+--------+
|0001     | 89     |
|0002     | 76     |
|0003     | 76     |
|0004     | 84     |
|0005     | 84     |
|0006     | 84     |
|0007     | 76     |
|0008     | 91     |
|0009     | 88     |
|0010     | 86     |
+---------+--------+ 输出: +---------+
| 成绩    |
+---------+
| 84      |
+---------+ 解释: 根据学号排序,84分连续出现3次
示例1

输入

CREATE TABLE 成绩表
(
    `学号`   VARCHAR(512),
    `分数`   INT
);
INSERT INTO 成绩表 (`学号`, `分数`) VALUES 
('0001', 89),
('0002', 76),
('0003', 76),
('0004', 84),
('0005', 84),
('0006', 84),
('0007', 76),
('0008', 91),
('0009', 88),
('0010', 86);

输出

分数
84
头像 牛客987852806号
发表于 2024-07-03 14:58:53
自行排序,然后在求差。 select 分数 from( select 分数, row_number()over() as py, row_number()over(order by 分数 ) as pn from 成绩表 ) as t group by t.分数,cast(py as signe 展开全文
头像 在考古的长颈鹿很喜欢吃卤蛋
发表于 2025-07-24 15:10:27
WITH ConsecutiveScores AS ( SELECT 分数, LAG(分数, 1) OVER (ORDER BY 学号) AS prev_score1, LAG(分数, 2) OVER (ORDER BY 学号) AS pre 展开全文