小编典典

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

sql

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

例如

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命令来做到这一点。

任何输入将不胜感激。


阅读 182

收藏
2021-04-28

共1个答案

小编典典

在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

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

2021-04-28