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

Oracle SQL:将套餐价格分配至单个产品的实现方案咨询

按比例分配套餐价格到单品的SQL实现

不需要CASE语句,直接用窗口函数就能搞定核心逻辑——先计算同一套餐内所有单品的原始价格总和,再基于这个总和计算每个单品的比例,最后用套餐总价乘以比例得到分配后的价格。

假设你的订单表结构如下(字段名可根据实际调整):
customer_id, bundle_name, product_name, list_price, bundle_price

对应的SQL代码如下:

SELECT
    customer_id,
    bundle_name,
    product_name,
    list_price,
    bundle_price,
    -- 计算当前单品在套餐中的价格占比
    ROUND(list_price / SUM(list_price) OVER (PARTITION BY customer_id, bundle_name), 4) AS List_Ratio,
    -- 计算按比例分配后的套餐价格
    ROUND(bundle_price * (list_price / SUM(list_price) OVER (PARTITION BY customer_id, bundle_name)), 2) AS Ratio_Bundle_Price
FROM
    your_order_table;

代码说明:

  • SUM(list_price) OVER (PARTITION BY customer_id, bundle_name):窗口函数会按客户ID和套餐名称分组,计算每组(即同一客户的同一套餐)内所有单品的list_price总和,作为比例计算的分母。
  • List_Ratio:当前单品的原始价格除以套餐内单品总价,得到该单品的价格占比,用ROUND保留4位小数方便查看。
  • Ratio_Bundle_Price:用套餐总价bundle_price乘以该单品的占比,得到分配到该单品的价格,保留2位小数符合金额格式。

示例结果(以客户1购买套餐A,bundle_price=200为例):

customer_idbundle_nameproduct_namelist_pricebundle_priceList_RatioRatio_Bundle_Price
1套餐A产品11002000.5000100.00
1套餐A产品2802000.400080.00
1套餐A产品3202000.100020.00

内容的提问来源于stack exchange,提问作者Es-Dot

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 11:55:26