You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按M分组取对应最大serial行的P与Q进行除法运算?

解决方案

嘿,这个需求我熟!你需要的是在每个m分组里,分别抓出P不为空的行中serial最大的那个P值,以及Q不为空的行中serial最大的那个Q值,然后做除法运算。刚好给你写个适配Oracle的SQL方案,完全匹配你的预期结果:

WITH mytable as (
 select 1 as serial, 'm1' as m, 10 as p, null as q from dual
 union all -- 推荐用union all替代union,避免不必要的去重开销
 select 2, 'm1', 12, null from dual
 union all
 select 3, 'm1', null, 5 from dual
 union all
 select 4, 'm2', 20 , null from dual
 union all
 select 5, 'm1', null, 6 from dual
 union all
 select 6, 'm2', null, 4 from dual
),
-- 提取每个分组中P非空且serial最大的P值
max_p_per_m as (
    select m, p
    from (
        select m, p, serial,
               row_number() over(partition by m order by serial desc) rn
        from mytable
        where p is not null
    )
    where rn = 1
),
-- 提取每个分组中Q非空且serial最大的Q值
max_q_per_m as (
    select m, q
    from (
        select m, q, serial,
               row_number() over(partition by m order by serial desc) rn
        from mytable
        where q is not null
    )
    where rn = 1
)
-- 关联两个子结果,计算分组的P/Q值
select mp.m, mp.p / mq.q as calculated_value
from max_p_per_m mp
join max_q_per_m mq on mp.m = mq.m;

逻辑说明

  • max_p_per_m:在每个m分组内,筛选出P不为空的行,按serial降序排序后取第一行,得到该组最新(serial最大)的有效P值
  • max_q_per_m:同理,得到每个分组最新的有效Q值
  • 最后通过m字段关联两个结果集,执行除法运算得到最终计算值

运行结果

MCALCULATED_VALUE
m12
m25

完全符合你给出的预期结果哦!

内容的提问来源于stack exchange,提问作者Soon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 11:57:41