当前位置: 首页 > 面试题库 >

SQL-查询帮助:查找局部最大值

连坚白
2023-03-14
问题内容

我有一张桌子,上面有一张图表中的数据。

例如

index  value
0      3
1      5
2      7
3      6
4      8
5      9
6      12
7      11
8      10
9      14
10     13

我需要一个查询,该查询返回值在局部最大值处的结果,即特定索引处的值大于index + 1和index-1处的值。

因此,对于示例集,它应返回索引列表:2、6、9,它们对应于值7、12、14。

我在SQLite中使用PHP。我可以用php中的foreach循环来做到这一点,但想知道是否有一种简单的方法可以仅使用SQL命令来做到这一点。

任何输入将不胜感激。


问题答案:

在PHP中使用单循环执行此操作可能比将其插入SQL查询中要快得多,但是如果您确实愿意,可以使用以下方法将表自身与自身连接:

SELECT b.index
FROM   points AS a, points AS b, points AS c
WHERE  a.index = b.index-1 AND c.index = b.index+1
   AND a.value < b.value   AND c.value < b.value

(未经测试,所以交叉指。)



 类似资料:
  • 我有3张桌子 许可证中的CREATED_AT是一个日期(非空)字段。 表根据同名主键/外键进行关联;客户可以拥有0个或多个许可证,每个许可证都有一个版本。 我想从这些表格中得到: 客户的名字、姓氏和创建的最后一个许可证的release\u id(根据许可证中的created\u AT字段查找最后一个),如果有。 对于这个问题,我使用了以下查询: 这似乎有效,但我问是否有人可以证实我这一点,或者是否

  • 问题内容: 我需要从下表中删除半重复记录 对于存在的任何重复PID,我想删除最低得分记录。在上面的示例中,将删除ID 1。我试图提出一种不使用循环的方法,但确实很挣扎。 任何帮助,将不胜感激。 谢谢 问题答案:

  • 我的问题类似于SQL选择组查询。但是架构发生了变化,我想要不同的结果,如下所述。给定链接的解决方案没有给我正确的解决方案。您可以使用SQL小提琴来解决这个问题。 下面是我的桌子 表1 现在,我想显示每个产品的两个最低金额,如果金额相同,那么任何人都按照升序排列... 所以我想构建单个SQL查询,它给我的结果如下。 请帮我建立这样的查询。

  • 问题内容: 我正在尝试构造一个查询,该查询将包括指示用户是否下载了文档的列。我有一个名为HasDownloaded的表,其中包含以下各列:id,documentID,memberID。找出用户是否下载了 特定 文档很容易;但我需要生成一个查询,其结果将如下所示: 该ID并不是很重要;我感兴趣的是文档是否已下载(是否为NULL)。 这是我的查询: 问题是,只有在HasDownloaded表中存在指定

  • 编写一个查询以显示staffid、费用代码、专科id、专科名称、会诊日期、患者号和到期日将使用会诊日期+21计算 STAFFID NOT NULL CHAR(2) FIRSTNAME VARCHAR2(20) LASTNAME VARCHAR2(20) 角色VARCHAR2(15) 性别CHAR(1) 日期连接日期 DATELEFT DATE SQL>描述staffspeciality错误: OR