【问题标题】:Maximum column difference in two successive rows两个连续行中的最大列差
【发布时间】:2017-11-01 13:06:02
【问题描述】:

我正在使用带有 PostgreSQL 数据库的 Rails 应用程序。 我有表命名上传,其中有这样的记录

ID   media_count  created_at
1    10           01-01-2017   
2    12           02-01-2017
3    20           03-01-2017
4    25           04-01-2017

我需要找出任何连续行中 media_count 的最大差异

与上述情况一样,这些行的差异将是 8

ID   media_count  created_at
2    12           02-01-2017
3    20           03-01-2017

我不知道如何进行这样的查询。

【问题讨论】:

    标签: ruby-on-rails postgresql ruby-on-rails-4 activerecord rails-activerecord


    【解决方案1】:

    您可以尝试以下方法:

    Upload.all.each_cons(2).max_by { |x1, x2| x2.media_count - x1.media_count }
    

    我假设连续性由id 列确定(如果不是,则需要将all 方法替换为order 方法,提供明确的列名和升序排序声明,例如, order(created_at: :asc))。

    【讨论】:

    • 非常感谢,它运行良好。 & 看来我需要了解这些方法。
    • 请问有没有更好的查询方式?
    • @MuhammadFaisalIqbal:是的,有,但不是纯粹的活动记录,但您至少需要部分使用普通 sql 来实现这一点(用于构建子查询或临时表)跨度>
    • @MuhammadFaisalIqbal:如果你想看这个sql方向的话,编辑历史中有这样一个查询的草稿
    • 一定会尝试理解这方面的工作,非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-24
    • 2015-02-03
    • 2014-02-15
    • 2019-12-13
    • 2020-03-30
    • 2020-04-13
    • 2017-02-14
    相关资源
    最近更新 更多