找出超速时间段?

2024-02-01

我脑海中浮现出一些有趣的事情。假设我们有一个表(在 SQL Server 中),如下所示:

  • Location
  • Velocity
  • Time

例如:

Location     Velocity   Time
1            40         1:20
2            35         2:00
3            45         2:05
4            50         2:30
5            60         2:45
6            48         2:55
7            40         3:00
8            35         3:15
9            50         3:20
10           70         3:30
11           50         3:35
12           40         3:40

假设速度障碍是 40kph,输出是这样的

Starttime         Endtime
2:05              3:00
3:20              3:35 

确定超速时段(定义速度障碍)的最佳方法是什么?我的第一个想法是将表加载到数组中,然后迭代数组以查找这些周期:

(伪C#代码)

bool isOverSpeed = false;

for (int i =0;i<arr.Length;i++)
{
if (!isOverSpeed)
    if (arr[i].Velocity > speedBarrier)
        {
            #insert the first record into another array.
            isOverSpeed = true;
        }
if(isOverSpeed)

    if (arr[i].Velocity < speedBarrier)
          {
          #insert the record into that array
          isOverSpeed = false;
          }

}

它有效,但有点“不是很有效”。是否有一种“更智能”的方法,例如 T-SQL 查询或其他算法来执行此操作?


您可以通过使用 CTE 来实现这一点(通用表表达式 https://web.archive.org/web/20210927200924/http://www.4guysfromrolla.com/webtech/071906-1.shtml).

下面的查询适用于 SQL Server 的 Adventure Works 演示表(“速度限制”为 7)。

这是受到 SO 上另一个问题的强烈启发:SQL 中连续行的 GROUP BY https://stackoverflow.com/questions/1136597/group-by-for-continuous-rows-in-sql.

with CTE as (
    select
        ROW_NUMBER() over(order by SalesTaxRateID) as RowNo
        , *
    from
        Sales.SalesTaxRate
)
, MyLogGroup as (
    select
        l.*
        ,(select
              max(SalesTaxRateID)
          from
              CTE c
          where
              not exists (select * from CTE
                              where RowNo = c.RowNo-1
                              and TaxRate > 7
                              and c.TaxRate > 7)
              and c.SalesTaxRateID <= l.SalesTaxRateID) as GroupID
    from
        Sales.SalesTaxRate l)
select
    min(SalesTaxRateID) as minimum
    , max(SalesTaxRateID) as maximum
    , avg(TaxRate)
from
    MyLogGroup
group by
    GroupID
having
    min(TaxRate) > 7
order by
    minimum

这些内容应该适合您:

with CTE as (
    select
        ROW_NUMBER() over(order by [Time]) as RowNo
        , *
    from
        <table_name>
)
, MySpeedGroup as (
    select
        s.*
        ,(select
              max([Time])
          from
              CTE c
          where
              not exists (select * from CTE
                              where RowNo = c.RowNo-1
                              and Velocity > <speed_limit>
                              and c.Velocity > <speed_limit>)
              and c.[Time] <= s.[Time]) as GroupID
    from
        <table_name> l)
select
    min([Time]) as minimum
    , max([Time]) as maximum
    , avg([Velocity]) -- don't know if you want this
from
    MySpeedGroup
group by
    GroupID
having
    min(Velocity) > <speed_limit>
order by
    minimum
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

找出超速时间段? 的相关文章

  • C++ 指针和对象实例化

    这有效 MyObject o o new MyObject 而这并不 MyObject o new MyObject Why 关键词new 返回一个指针 http msdn microsoft com en us library kewsb
  • 在 .NET Core 中从 HttpResponseMessage 转换为 IActionResult

    我正在将之前在 NET Framework 中编写的一些代码移植到 NET Core 我有这样的事情 HttpResponseMessage result await client SendAync request if result St
  • C# 中的抽象类和接口类有什么不同?

    C 中的抽象类和接口类有什么不同 An 接口不是类 它只是一个contract定义了public一个类的成员must实施 抽象类只是一个类 您从中可以cannot创建一个实例 通常您会使用它来定义一个基类 该基类定义了一些virtual方法
  • 线性代数如何在算法中使用?

    我的几个同行都提到 学习算法时 线性代数 非常重要 我研究了各种算法并学习了一些线性代数课程 但我没有看到其中的联系 那么线性代数如何应用在算法中呢 例如 图的连接矩阵可以带来哪些有趣的事情 三个具体例子 线性代数是现代 3D 图形的基础
  • 为什么 BinaryFormatter 可以序列化 Action<> 但 Json.net 不能

    尝试序列化 反序列化 Action 尝试我的 1天真 JsonConvert SerializeObject myAction JsonConvert Deserialize
  • FluentAssertions ShouldNotThrow 无法识别异步方法/Func

    我正在尝试检查异步方法是否抛出具体异常 为此 我使用 MSTEST 和 FluentAssertions 2 0 1 我已经检查过这个关于 Codeplex 的讨论 http fluentassertions codeplex com wo
  • 模板与非模板类,跨编译器的不同行为

    我在一些应用程序中使用编译时计数器 它确实很有用 昨天我想用 gcc 编译一个程序 我之前使用的是 msvc 并且计数器的行为在模板类中发生了变化 它在模板类中不再工作 过于简化的代码 Maximum value the counter c
  • ASP.NET MVC 动作过滤器

    有谁知道即使在 CATCH 块中 ActionFilterAttribute 类的 OnResultExecuted 方法是否也会执行 ie CookiesActions public ActionResult Login Usuarios
  • 列表到优先队列

    我有一个 C 大学编程项目 分为两个部分 在开始第二部分时应该使用priority queues hash tables and BST s 我 至少 在优先级队列方面遇到了麻烦 因为它迫使我自己重做第一部分中已经实现的许多代码 该项目是关
  • 出于安全目的,您是否有理由不执行自己的算法来打乱 ID?

    我计划实现我自己的非常简单的 哈希 公式 为具有多个用户的应用程序添加一层安全性 我目前的计划如下 用户创建一个帐户 此时后端会生成一个 ID ID 通过公式运行 假设 ID 57 8926 36 7 或同样随机的东西 然后 我将新的用户
  • 节点*链表中的下一个

    我是数据结构和算法的新手 我遇到了以下代码 typedef struct node int data node next 谁能告诉我为什么我们要声明节点 next next 不能声明为 int next 吗 因为你希望能够做到n gt ne
  • 如何重命名 SQL Server 中名称中带有方括号的内容?

    我的一张桌子上有一列 周围有方括号 Book Category 我想重命名为Book Category 我尝试了以下查询 sp rename BookPublisher Book Category Book Category COLUMN
  • 应在堆栈上分配的最大数量

    我一直在寻找堆栈溢出有关应在堆栈上分配的最大内存量的指南 我看到了堆栈与堆分配的最佳实践 但没有关于应该在堆栈上分配多少以及应该在堆上分配多少的指南 有什么想法 数字可以作为指导吗 什么时候应该在堆栈上分配 什么时候应该在堆上分配 多少才算
  • 产品和变体 - 设计数据库的最佳方法

    描述 商店可以有产品 鞋子 T 恤等 每个产品可以有许多变体 每个变体可以有不同的价格和库存 例如T 恤有不同的颜色和尺寸 颜色 蓝色 尺寸 L 价格 10 美元 库存 5 颜色 蓝色 尺寸 XL 价格 10 美元 库存 10 颜色 白色
  • 如何比较表中最后一个和倒数第二个条目的值?

    我在 Oracle 中有一个名为quotes 的表 其中包含两列 date 和value 我想比较表中最后一个条目和倒数第二个条目的值 在此示例中 我想获取日期13 1 和 11 1在一行中以及每个日期的值之间的差异 10 5 5 报价表
  • 如何通过代理将套接字连接到http服务器?

    最近 我使用 C 语言编写了一个程序 用于连接到本地运行的 HTTP 服务器 从而向该服务器发出请求 这对我来说效果很好 之后 我尝试使用相同的代码连接到网络上的另一台服务器 例如 www google com 但我无法连接并从网络中的代理
  • 为什么 C++ 标准没有将 sizeof(bool) 定义为 1?

    Size of char signed char and unsigned char由 C 标准本身定义为 1 个字节 我想知道为什么它没有定义sizeof bool also C 03 标准 5 3 3 1 说 sizeof char s
  • Asp.Net Core 中的 SSL 不起作用

    我从 Visual Studio 创建了一个简单的 Web 应用程序Web Application Net Core 具有个人用户帐户授权的模板 然后 我启用了 SSLProject gt MyProject Properties 将带有
  • 在 C# 中使用自定义千位分隔符

    在显示字符串时 我尝试不使用 字符作为千位分隔符 而是使用空格 我想我需要定义一种自定义文化 但我似乎做得不对 有什么指点吗 例如 将 1000000 显示为 1 000 000 而不是 1 000 000 no String Replac
  • 在 LP2844Z(Zebra 打印机)上的收据中包含 PNG [重复]

    这个问题在这里已经有答案了 我正在致力于创建一个基于 HTML5 画布的签名 绘图框 目前我们在服务器上将画布保存为PNG 但可以轻松地将base64字符串保存在数据库中 现在的问题是我们如何在打印的收据上添加签名 目前我们使用 GF 字段

随机推荐

  • 如果我是唯一的用户,可以避免 ROAuth 握手中的 PIN 步骤吗?

    Question 有没有办法避免在进行 OAuth 握手时手动输入 PIN Context 进行 ROAuth 握手时 系统会要求我输入通过以下链接获取的 PIN rm list ls library twitteR library ROA
  • 捕获 ThreadAbortException 时隐藏的 Throw 有何作用?

    我正在阅读一本关于一般 C 开发的书 并且已经读到了线程中止部分 这本书说 当你在另一个线程上调用 Thread Abort 时 该线程将抛出 ThreadAbortException 即使你试图抑制它 它也会自动重新抛出它 除非你做了一些
  • 将组件推送到组件数组 - ReactJS

    我对 React 数组有点迷失了 我想要做的是拥有组件 文章 数组 并且在该数组中我想要拥有标题和内容 我想要对该数组执行的操作是添加 删除并将其显示在我的页面上 那么我做错了什么 另外这个动作到底叫什么 代码来自ReactJS 演示 ht
  • jquery 图像映射调整大小

    我编写此函数是为了重新调整 onLoad 元素的位置以及用户是否调整浏览器窗口的大小 它在加载时工作正常 但在调整窗口大小时无法正确重新计算 我究竟做错了什么 var orig width jQuery imageMaps attr wid
  • React.js:数组和“违反了有关合并函数的关键假设”错误

    http jsfiddle net NV f54Xr http jsfiddle net NV f54Xr jsx React DOM var Dummy React createClass mixins React addons Link
  • 使用Python将ts转换为mp4[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我们不允许提出寻求书籍 工具 软件库等推荐的问题 您可以编辑问题 以便用事实和引文来回答 编辑问题以包括期望的行为 特定问题或错误以及重现
  • 使用 PhantomJS 运行 RequireJS/WireJS 应用程序

    我正在尝试执行一个使用 RequireJS 2 1 8 WireJS 0 10 2 和 PhantomJS 1 9 2 的基本应用程序 当使用 PhantomJS 运行应用程序时 这是我的目标 WireJS 无法加载 请参见下面的错误 使用
  • 中心导航栏链接没有品牌将其推到 Bootstrap 4 的右侧?

    我试图将我的导航栏链接居中 但是当我这样做时 我的品牌徽标将其推到右侧 因此它不居中 这是我的 html
  • AngularJS - 将 $resource.query 与 params 对象一起使用

    我正在尝试接起angular js http angularjs org并致力于找出一些记录较少的事情 考虑一下 我在服务器上有一个搜索方法 它接受查询参数并返回搜索结果的集合 并响应GET search json路线 Rails FWIW
  • Ag-grid:使用 AggFunc 时如何更改定义列标题名称?

    对于给定的列定义 当使用 aggFunc 时 headerName 以 func string 格式显示 我只希望标题显示我定义的字符串 当 AggFunc 为 null 时 此行为不存在 const columnDef any heade
  • 使 Appen 功能在 Google 谷歌表格/[重复]中运行得更快

    这个问题在这里已经有答案了 我有一个代码工作正常但没有优化 我是 Google App 脚本的新手 该代码执行以下操作 从外部URL获取数据 过滤数据 解析文件夹中包含的工作表中的数据 更改列标题 在特定列中附加内容 function my
  • PostgreSQL - 按 UUID 版本 1 时间戳排序

    我在用UUID版本1 https en wikipedia org wiki Universally unique identifier Version 1 date time and MAC address 作为主键 我想按 UUID v
  • 如何在 SwiftUI AttributedString 中渲染 Markdown 标题?

    我一直在尝试使用新的属性字符串 https developer apple com documentation foundation attributedstring随 iOS 15 一起发布 用于渲染存储在变量中的 Markdown 但是
  • 在 MVC 中使用 dotnet core 时如何删除 ErrorViewModel

    如果 ErrorViewModel 从我的项目中删除 它将无法运行 失败于app UseMvc 出现错误 System TypeLoadException 无法加载类型 程序集 DocumentGenerationService 版本 1
  • SED 更改标签之间的值

    我在 UNIX 上有这样的日志文件 start host1 java serv host1 def java es dev L2 1 dev w fr host1 def java es dev L3 0 dev w fr host1 de
  • 扫描线算法 - 一维平面的实现

    问题很简单 平面上有一些给定的一维线 我们需要找到至少有一行的空间的总大小 让我用一个示例图像来讨论这个问题 这可能是一个案例 Or 这可能是一个案例或类似的东西 我知道这是一个基本问题扫线算法 https en wikipedia org
  • 全屏显示时 Flex 中的文本输入字段不起作用

    大家好 我有一个问题 如果我的应用程序是全屏的 我无法单击任何文本输入组件 也无法在字段中输入任何文本 我尝试过在运行时创建文本输入字段 并且尝试在 Flex 构建器的 GUI 设计窗口上时在画布上创建它们 然而 它们都给出相同的结果 并且
  • 将 IO Int 转换为 Int

    我通过转换创建了一个组合框xmlWidget to a comboBox与功能castTocomboBox现在我想获取活动项目的文本或索引 问题是如果我使用comboBoxGetActive它返回一个函数IO Int结果 我需要知道如何获得
  • ASP.NET MVC 将 null 转换为零长度字符串

    我正在使用 MVC 3 并尝试将留空的字段作为零长度字符串而不是空值发送到数据库 这可能与数据注释属性有关吗 如果不是 从空值转换的最合适的位置是什么 是在模型验证期间吗 虽然不理想 但这是我所知道的最好的方法 DisplayFormat
  • 找出超速时间段?

    我脑海中浮现出一些有趣的事情 假设我们有一个表 在 SQL Server 中 如下所示 Location Velocity Time 例如 Location Velocity Time 1 40 1 20 2 35 2 00 3 45 2