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

获取percentages与prices表合理关联结果的SQL查询需求

解决百分比与价格表的逻辑关联问题

需求说明

现有两张数据表:

  • percentages:根据供应商、销售员、客户和数量阈值确定适用的百分比,qty为最小适用数量(即数量≥该值时使用对应百分比)
  • prices:根据客户、商品和数量阈值确定价格,qty同样为最小适用数量

需要关联两张表,仅保留逻辑有效的组合:比如当prices.qty=50(表示数量≥50时用该价格)时,percentages中只能匹配该客户下qty≤50的最大阈值对应的百分比(例如客户David的percentages里有qty=20,就不能再用qty=0的百分比)。

表结构与示例数据

percentages表

suppliersalespersoncustomerqtypercent
JohnAnneDavid00.25
JohnAnneDavid200.50
JohnAnneMary00.25
PaulAndrewDavid00.25

prices表

Customerarticleqtyprice
DavidX050
DavidX5040
DavidY050
MaryX050
MaryY055

解决方案SQL

WITH price_with_valid_pct_threshold AS (
    -- 为每个价格条目,计算对应客户下允许的最大百分比阈值(≤当前价格阈值)
    SELECT 
        p.*,
        (SELECT MAX(pct.qty) 
         FROM percentages pct 
         WHERE pct.customer = p.Customer 
           AND pct.qty <= p.qty) AS max_pct_qty
    FROM prices p
)
SELECT 
    pct.supplier,
    pct.salesperson,
    pw.Customer,
    pw.article,
    pw.qty AS price_min_qty,
    pw.price,
    pct.qty AS pct_min_qty,
    pct.percent
FROM price_with_valid_pct_threshold pw
JOIN percentages pct 
    ON pw.Customer = pct.customer 
    AND pct.qty = pw.max_pct_qty
ORDER BY pw.Customer, pw.article, pw.price_min_qty, pct.supplier;

逻辑说明

  1. 子查询price_with_valid_pct_threshold:针对每个价格条目,找到同客户下所有百分比规则中,阈值≤当前价格阈值的最大值——这就是该价格条目能匹配的唯一有效百分比阈值。
  2. 最后将价格表与百分比表通过客户和计算出的有效阈值关联,得到所有逻辑合理的组合。

预期结果

suppliersalespersonCustomerarticleprice_min_qtypricepct_min_qtypercent
JohnAnneDavidX05000.25
PaulAndrewDavidX05000.25
JohnAnneDavidX5040200.50
PaulAndrewDavidX504000.25
JohnAnneDavidY05000.25
PaulAndrewDavidY05000.25
JohnAnneMaryX05000.25
JohnAnneMaryY05500.25

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 03:50:09