【问题标题】:How do I return customer_id whose first order value > second order value? [closed]如何返回第一个订单价值>第二个订单价值的customer_id? [关闭]
【发布时间】:2021-03-20 06:40:18
【问题描述】:

我有一张如下表:

订单:order_id、customer_id、item_price、item_quantity、order_datetime

现在我想返回第一个订单值大于第二个订单值的 customer_id。

对不起,我没有任何代码,因为我完全不知道如何回答这个问题:(

【问题讨论】:

    标签: mysql sql datetime aggregate-functions greatest-n-per-group


    【解决方案1】:

    一个选项使用窗口函数和聚合:

    select customer_id
    from (
        select o.*, 
            row_number() over(partition by customer_id order by oder_datetime) rn
        from orders o
    ) o
    where rn <= 2
    group by customer_id
    having sum(
        case when rn = 1 
            then   item_price * item_quantity 
            else - item_price * item_quantity 
        end
    ) > 0
    

    【讨论】:

      猜你喜欢
      • 2021-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-20
      • 2021-02-18
      • 1970-01-01
      • 2012-05-18
      • 1970-01-01
      相关资源
      最近更新 更多