【问题标题】:How to get the first row which exceeds a specific amount in SQL如何获取超过SQL中特定数量的第一行
【发布时间】:2021-09-08 12:45:12
【问题描述】:

我有一个包含以下数据的表:

ID Amount Date
1 500 2021-05-01
2 100 2021-05-03
3 300 2021-05-06

我需要获取第一个超过特定数量的记录,例如以下示例:

  • 如果具体金额是500,我们返回ID 1
  • 如果具体金额是550,我们返回ID 2
  • 如果具体金额为 600,我们返回 ID 2
  • 如果具体金额 > 600,我们返回 ID 3

如何使用 MySQL 查询来实现?

【问题讨论】:

    标签: mysql sql mariadb


    【解决方案1】:

    您可以使用累积和和一些过滤:

    select t.*
    from (select t.*,
                 sum(amount) over (order by date) as running_amount
          from t
         ) t
    where running_amount >= @threshold and
          (running_amount - amount) < @threshold;
    

    【讨论】:

    • 太棒了。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-07-21
    • 2021-01-17
    • 2018-04-01
    • 1970-01-01
    • 2021-12-22
    • 2016-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多