【问题标题】:Find turning points in rows with SQL or LINQ使用 SQL 或 LINQ 查找行中的转折点
【发布时间】:2020-07-05 23:39:20
【问题描述】:

免得说我有以下数据:

    Date            Value
  04.04.2019    |   -1,7
  05.04.2019    |   -3,3
  06.04.2019    |   -4,4
  07.04.2019    |   -6,4
  08.04.2019    |   5
  11.04.2019    |   8
  12.04.2019    |   -9,2
  13.04.2019    |   -12,4
  14.04.2019    |   2,5
  15.04.2019    |   9,1
  18.04.2019    |   5,6
  19.04.2019    |   5,9
  20.04.2019    |   8,5
  21.04.2019    |   -5,4
  26.04.2019    |   -5,7
  27.04.2019    |   -7,3
  28.04.2019    |   5,4
  29.04.2019    |   5,3
  02.05.2019    |   -3,6
  03.05.2019    |   -3,1
  04.05.2019    |   -1

我正在寻找一个 SQL 或 LINQ 查询,我可以在其中找到所有具有转折点的行,该转折点的值上升或低于给定值,比如 5。

【问题讨论】:

    标签: c# mysql sql linq


    【解决方案1】:

    使用lag() 和过滤:

    select t.*
    from (select t.*, lag(value) over (order by date) as prev_value
          from t
         ) t
    where (prev_value < 5 and value > 5) or
          (prev_value > 5 and value < 5);
    

    请注意,lag() 是从 MySQL 8+ 开始提供的标准 SQL 函数。

    【讨论】:

    • 请不要回答提问者没有自己努力的问题,因为这不鼓励他们进行适当的研究和学习。
    猜你喜欢
    • 2013-11-25
    • 1970-01-01
    • 2010-11-20
    • 2020-01-23
    • 2019-10-23
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多