SQL GROUP BY:连续性间隔?

2024-02-07

这个想法是说你有下表。

-------------
| oID | Area|
-------------
| 1 | 5     |
| 2 | 2     |
| 3 | 3     |
| 5 | 3     |
| 6 | 4     |
| 7 | 5     |
-------------

如果可以按连续性分组,则此伪查询

SELECT SUM(Area) FROM sample_table GROUP BY CONTINUITY(oID)

会回来

-------------
| SUM(Area) |
-------------
|  10       |
|  12       |
-------------

如果在 oID 处出现连续性中断,或者更确切地说,缺少代表 oID 4 的条目。

Sql的标准函数中是否存在这样的功能?


“SQL的标准函数”中没有这样的功能,但是通过一些技巧可以得到想要的结果集。

通过下面所示的子查询,我们创建一个虚拟字段,您可以使用它GROUP BY在外部查询中。每次当序列中有间隙时,该虚拟字段的值就会递增oID。通过这种方式,我们为每个“数据岛”创建一个标识符:

SELECT  SUM(Area), COUNT(*) AS Count_Rows
FROM    (
        /* @group_enumerator is incremented each time there is a gap in oIDs continuity */
        SELECT  @group_enumerator := @group_enumerator + (@prev_oID != oID - 1) AS group_enumerator,
                @prev_oID := oID AS prev_oID,
                sample_table.*
        FROM    (
                SELECT  @group_enumerator := 0,
                        @prev_oID := -1
                ) vars,
                sample_table
        /* correct order is very important */
        ORDER BY
                oID
        ) q
GROUP BY
        group_enumerator

测试表和数据生成:

CREATE TABLE sample_table (oID INT auto_increment, Area INT, PRIMARY KEY(oID));
INSERT INTO sample_table (oID, Area) VALUES (1,5), (2,2), (3,3), (5,3), (6,4), (7,5);

我要感谢夸斯诺伊指出我的相关问题中的这个技巧 https://stackoverflow.com/questions/1136597/group-by-for-continuous-rows-in-sql ;-)

更新:添加了测试表和数据,并修复了示例查询中的重复列名。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL GROUP BY:连续性间隔? 的相关文章

  • sql查询中case语句中的布尔值

    我在选择查询中使用 case 语句 类似这样 Select col1 col2 isActive case when col3 abc then 1 else 0 end col4 from
  • MSSQL:如何使用代码编写存储过程创建脚本?

    我正在尝试使用一个数据库中存在但另一个数据库中不存在的 information schema routines 查询存储过程定义列表 SELECT t1 Routine Definition FROM server1 MyDatabase
  • 为什么我在 WinForms 列表框中得到“System.Data.DataRowView”而不是实际值?

    每当我运行代码并尝试查看highscore我在列表框中得到的只是System Data DataRowView 谁能明白为什么吗 Code MySqlConnection myConn new MySqlConnection connStr
  • 如何使用 ALTER TABLE 添加新列并使其唯一?

    我该如何使用ALTER TABLE添加新列并使其独一无二 取决于 DBMS 但我认为以下内容相当可移植 ALTER TABLE table name ADD column name datatype ALTER TABLE table na
  • Oracle中如何选择前100行?

    我的要求是获取每个客户的最新订单 然后获取前100条记录 我编写了一个如下查询来获取每个客户的最新订单 内部查询工作正常 但我不知道如何根据结果获得前 100 名 SELECT FROM SELECT id client id ROW NU
  • 如何使用 Alter Table 在 Access 中创建小数字段?

    我想以编程方式在 MS Access 表中创建一个新列 我尝试过很多排列ALTER TABLE MyTable Add MyField DECIMAL 9 4 NULL 并得到 字段定义中的语法错误 我可以轻松创建一个数字字段Double类
  • MyBatis 枚举的使用

    我知道以前有人问过这个问题 但我无法根据迄今为止找到的信息实施解决方案 所以也许有人可以向我解释一下 我有一个表 状态 它有两列 id 和 name id是PK 我不想使用 POJO Status 而是使用枚举 我创建了这样一个枚举 如下所
  • Wordnet sqlite 同义词和示例

    我正在尝试获取给定 wordid 的同义词和示例列表 经过大量的试验和错误 我可以获得所有同义词集的样本 但不是实际的同义词 这是我的查询 它给出了以下结果 select senses wordid senses synsetid sens
  • 日常 MySQL(部分和过滤)复制的最佳实践?

    我有一个相当大的数据库 有超过 40 个表 我只需要复制几个表 5 并且每个表也被过滤 我正在寻找一些复制这些数据的最佳实践 每天就足够了 我可以只选择几个表并为每个表包含一些 WHERE 子句 我正在考虑为每个表启动 mysqldump
  • PostgreSQL & regexp_split_to_array + 取消嵌套

    我有这样的绳子 测试1 纽约 X 测试 2 芝加哥 Y 测试 3 宾夕法尼亚州哈里斯堡 Z 我需要的结果是 Column1 Column 2 Column3 Test 1 new york X Test 2 chicago Y Test 3
  • SQL Like 带有子查询

    我怎样才能做到这一点 SELECT FROM item WHERE item name LIKE SELECT equipment type FROM equipment type GROUP BY equipment type 内部子查询
  • Mysql关于重复键更新+子查询

    使用这个问题的答案 需要 MySQL INSERT SELECT 查询具有数百万条记录的表 https stackoverflow com questions 662877 need mysql insert select query fo
  • 重用 PDO 语句 var 会使进程崩溃

    我重用一个变量来存储两个不同的 PDO mysql 语句 stmt dbh gt prepare SELECT stmt gt execute stmt dbh gt prepare UPDATE crash here Error in o
  • If Else 条件的 SQLite 语法

    我正在使用 SQLite 数据库 我的表有一个名为 密码 的文本列 早些时候 为了检索我用来执行简单操作的值select from myTable询问 但现在的要求是 如果Password值不是NULL那么我需要将其显示为 是 或 否 它是
  • 如何将此本机 SQL 查询转换为 HQL

    所以我有这个很长的复杂的 Native SQLQuery string hql SELECT FROM SELECT a rownum r FROM select f2 filmid f2 realisateurid f2 titre f2
  • 常量值如何影响连接的 ON 子句?

    我最近发现 LEFT JOIN 的 ON 子句可能包含 1 1 等值 这让我感到不安 因为它打破了我对连接功能的看法 我遇到过以下情况的更详细版本 SELECT DISTINCT Person ID FROM Person LEFT JOI
  • jDBI中如何进行内查询?

    我怎样才能在 jDBI 中执行这样的事情 SqlQuery select id from foo where name in
  • 当php脚本通过ajax运行时显示进度条

    我有一个通过 ajax 向服务器提交值的表单
  • Yii2:无法将列值更新+1

    创建新记录时 我需要将列值更新 1 public function actionCreate model new CreateBookings if model gt load Yii app gt request gt post Yii
  • 如何获取所有mysql元组结果并转换为json

    我能够从表中获取单个数据 但是当我试图获取表上的所有数据时 我只得到一行 cnn execute sql rows cnn fetchall column t 0 for t in cnn description for row in ro

随机推荐

  • 使用 ruby​​-gmail 读取 Gmail 邮件

    我正在寻找一个实例方法ruby gmailgem 可以让我阅读 身体 或者 subject Gmail 邮件的 查看文档后发现here http www rubydoc info gems ruby gmail 0 3 1 我什么也没找到
  • 单击链接后保持全屏 api 全屏显示

    我正在使用 HTML5 全屏 API 因此用户可以全屏查看我的网站 但是当用户单击链接 例如菜单项 时 用户会切换回正常浏览器模式 当用户单击某些链接时 如何使浏览器保持全屏 最好不必将整个网站转换为 AJAX 页面加载系统 如果不转换为
  • 选项卡背景颜色幻灯片过渡到下一个选项卡

    我正在尝试实现背景过渡 当您单击选项卡时 当前选项卡的背景会滑动到单击的选项卡 有人可以帮忙吗 before after box sizing border box radio wrap input position absolute op
  • Angular Date 过滤器在 Firefox 中不起作用

    我正在使用日期过滤器来格式化我的角度应用程序中的日期 在 Firefox 中 我得到的日期值为 未定义 NaN NaN NaN NaN NaN PM 在 Chrome 中 它的工作原理非常完美 2014 年 6 月 25 日 7 22 47
  • Javascript split 将字符串分成两部分,无论字符串中存在多少个吐出字符

    我想使用 split 函数将 Javascript 中的字符串拆分为两部分 例如我有字符串 str 123 345 678 910 如果我使用 javascripts split 它会将其分为 4 部分 但我需要它分为两部分 仅考虑它遇到的
  • InfoPath 2013 是否支持 Visual Studio 2013?

    我正在尝试为 InfoPath 2013 表单开发自定义代码 我安装了 Visual Studio 2013 Professional 但在尝试编辑代码时收到以下消息 The following external components ar
  • 具有多个 AND 条件的 DataTable 选择实现

    我正在使用一个包含大约 50 000 行的 DataTableDataTable Select从中检索行 这Select需要多个AND条件包括通配符匹配 我玩过并发现通过做同样的事情Select多步执行可以大大减少执行时间 但是改变一下执行
  • linux bash脚本获取用户输入并存储在数组中

    我想编写一个 bash 脚本来获取用户输入并将其存储在数组中 输入 1 4 6 9 11 17 22 我希望将其保存为数组 像这样读 read a arr Test read a arr lt lt lt 1 4 6 9 11 17 22
  • Facebook c# sdk 获取用户电子邮件

    我有一个使用 facebook 进行身份验证的网站 我想在用户注册时收集一些基本信息 包括他们的电子邮件地址 我的登录代码是标准的 public ActionResult Login string returnUrl var oAuthCl
  • Web 浏览器中 HTML5 和 CSS3 支持的最佳指南是什么?

    您知道有关 HTML5 和 CSS3 的有用资源吗 UPDATE 我 我想很多人 正在寻找实用信息 了解如何以及在多大程度上可以使用这些未完成的技术 我发现了一个非常有用的资源 http caniuse com http caniuse c
  • Swift 泛型函数中的位移位

    我正在尝试编写一个需要移位操作的通用函数 我的行为我不理解 这是一个演示该问题的简单函数 func testBytes
  • 什么是无头服务,它做什么/完成什么,以及它的一些合法用例是什么?

    我读过一些关于 Kubernetes 的书籍以及文档中有关无头服务的页面 https kubernetes io docs concepts services networking service headless services 但我仍
  • 如何触发 Hudson 的另一项工作作为预构建步骤?

    如何触发 Hudson 的另一项工作作为预构建步骤 有一个参数化触发器插件 https wiki jenkins ci org display JENKINS Parameterized Trigger Plugin 这会在 添加构建步骤
  • OpenGL 通过 FBO 渲染到纹理 -- 不正确的显示与正常纹理

    离屏渲染到纹理绑定的离屏帧缓冲区对象应该是微不足道的 但我遇到了一个问题 我无法理解 我的完整示例程序 目前仅限 2D 在这里 http pastebin com hSvXzhJT http pastebin com hSvXzhJT 请参
  • UICollectionView 用于 Xamarin.iOS 网格布局(MonoTouch)?

    我想知道是否有一个 UICollectionView 实现用于在网格中显示视图 图像 如下所示 我开始使用 UITableView 构建它 但是如果一个项目与其前任 后继项目不适合在同一行中 那么它会变得非常复杂 前几天我遇到了这个 这与你
  • Server单个端口(socket)最大并发连接数

    可以在同一端口 单套接字 上与服务器通信的并发客户端 使用不同端口号 的最大数量是多少 哪些因素可能影响这个计数 我正在 Linux 环境中寻找有关 telnet 的信息 这部分取决于您的操作系统 然而 对特定端口没有限制 然而 并发连接的
  • 多线程环境下什么是busy spin?

    什么是多线程环境下的 Busy Spin 它有什么用处以及如何在多线程环境中用java实现它 它以什么方式有助于提高应用程序的性能 其他一些答案忽略了忙碌等待的真正问题 除非您正在谈论一个您关心保存的应用程序电气功率 那么消耗 CPU 时间
  • 多重采样时如何解析 OpenGL 纹理中的深度值?

    我正在使用 FBO 将场景渲染为深度纹理 GL DEPTH COMPONENT 当我在应用程序中启用多重采样时 这些样本将解析为单个纹素 但它们是如何组合的 是存储到纹理的最近样本的深度 还是样本的平均值 此行为是否依赖于供应商 See t
  • 如何在 C# 中将字符串偏移量转换为时间跨度

    我正在尝试将转换时间转换为用户的时区 但我没有 Windows 时区字符串 例如 太平洋标准时间 我所拥有的只是一个字符串偏移量 例如 07 00 看来我需要创建一个时间跨度 是手动解析该字符串的唯一方法吗 似乎应该有一种方法使用字符串偏移
  • SQL GROUP BY:连续性间隔?

    这个想法是说你有下表 oID Area 1 5 2 2 3 3 5 3 6 4 7 5 如果可以按连续性分组 则此伪查询 SELECT SUM Area FROM sample table GROUP BY CONTINUITY oID 会