【问题标题】:SQL Pricing TiersSQL 定价层
【发布时间】:2015-07-01 22:38:44
【问题描述】:

我在 MySQL 中有一个定价查找表,我需要在其中根据交易数量查找正确的定价。

例如,我有一个定价表pricing,看起来像:

product    quantity    price
prod1      1           4
prod1      10          3
prod1      100         2
prod1      1000        1
prod2      1           0.4
...

我有一个名为transaction 的表,其中包含销售数据:

product    sales 
prod1      144
prod2      2
...

如何根据数量将销售额乘以正确的单价。 喜欢的东西:

product    sales    quantity    unitPrice
prod1      144      100         2
prod2....

我试图加入两个关于产品的表,但不知道从那里去哪里。

【问题讨论】:

  • 为什么不在产品上使用简单连接?为什么输出第一行是 (144, 100, 2) ?这是什么逻辑? prod1 的结果是 ((144,1, 4), (144, 10,3),(144,100,2)) 吗?

标签: mysql sql


【解决方案1】:

获取价格的一种方法是使用相关子查询:

select t.*,
       (select p.price 
        from pricing p
        where p.product = t.product and p.quantity >= t.quantity
        order by p.quantity
        limit 1
       ) as price
from transaction t;

类似的子查询可用于获取其他信息,例如定价层。

为了提高性能,您需要在pricing(product, quantity) 上建立索引。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-16
    • 1970-01-01
    • 1970-01-01
    • 2019-09-11
    相关资源
    最近更新 更多