sql - 如果 SQL Server 中的两个连续行是任意的,如何比较?
问题描述
我有一个 SQL 问题,我无法仅使用 SQL 来解决。
问题是:我有一个有 2 列的表。一个是Question
(int column),另一个是Answer
( varchar(1)
),如下所示:
Question Answer
--------+---------
1 | A
2 | A
3 | C
4 | D
5 | D
6 | D
7 | E
8 | A
9 | B
10 | A
11 | A
12 | A
输出应该是这样的;
Range Answer
-----------+----------
1-2 | A
3-3 | C
4-6 | D
7-7 | E
8-8 | A
9-9 | B
10-12 | A
我只是能够做到这一点,
select question, answer
from table
order by answer, question asc
抱歉,我对 SQL 很陌生,所以我不知道如何编写这个查询..
解决方案
这是一个差距和孤岛问题。您可以通过使用row_number()
枚举答案的值来处理它。这和问题之间的区别是不变的——识别岛屿:
select min(question), max(question), answer
from (select t.*, row_number() over (partition by answer order by question) as seqnum
from t
) t
group by (question - seqnum), answer
order by min(question);
推荐阅读
- r - 让在一年内为特定组计算的平均值与该给定年份的所有组有关
- android-management-api - 为什么我的 KIOSK 应用程序没有自动更新?
- java - 线程“主”java.lang.NoClassDefFoundError 中的异常:gnu/io/SerialPortEventListener
- parse-platform - 如何在解析中注册。www.parse.com 中没有注册按钮
- rust - 递归异步 fn 中的函数参数
- c++ - Qt:如何触发action_triggered然后使用QMouseEvent?
- kotlin - 在 App Engine 上运行 Kotlin Ktor 应用程序时出错
- node.js - Google Cloud Storage Node.js 设置元数据 file.save
- windows - terraform azurerm 下载并运行 powershell 脚本
- php - 在另一个选择中选择不显示所有内容