【问题标题】:create mysql query to get total sale amount based on items price change创建 mysql 查询以根据商品价格变化获取总销售额
【发布时间】:2015-01-16 11:56:59
【问题描述】:

我想创建一个 mysql 查询以根据其来源获取总销售额,但价格可能会发生变化 即价格上涨或价格下跌。

我的数据库表是:

items(itemId,itemSize,itemColor,.......)
prices(priceId,presentPriceBoolean,priceDate,itemPrice,items_itemId)
shipments(shipmentId,shipmentPairs,shipmentDate,items_itemId,sources_sourceId)
sales(saleId,sellByCashier,saleDate)
soldItems(soldItemId,soldItemType,quantitySold,discount,items_itemId,sales_saleId)
sources(sourceId,sourceName,......)

例如:

查看:物品的装运

itemId  shipmentDate    shipmentQuantity    Price   Source
     1  12/01/2015                     5     1500   Bata
     1  16/01/2015                    10     1700   Bata

视图:商品销售

itemId  saleQuantity    Discount    SaleDate    Source
     1             2           0    12/01/2015  Bata
     1             1         100    13/01/2015  Bata
     1             2         200    18/01/2015  Bata

以上信息显示 5 双商品于 2015 年 1 月 12 日(shipmentDate)以 1500 的价格发货,前 2 对在 2015 年 12 月 1 日(saleDate)售出,然后 1 对在 13/ 售出01/2015(销售日期)。 后来,10 双商品于 2015 年 1 月 16 日(发货日期)再次以 1700 的价格发货,2 对在 2015 年 1 月 18 日(销售日期)售出。

查询应根据一段时间内有效的价格计算销售金额,即从一个发货日期到下一个发货日期的有效价格。

从上面两个视图可以看出,最终的结果是这样的:

SUM(price * saleQuantity - discount)

(1500 * 2 - 0) + (1500 * 1 - 100) + (1700 * 2 - 200) = 7600

最终结果:

sourceName  saleAmount
Bata        7600

【问题讨论】:

  • 如果您愿意,请考虑遵循以下简单的两步操作: 1. 如果您还没有这样做(您还没有这样做),请提供适当的 DDL(和/或 sqlfiddle),以便我们可以更容易地复制问题。 2. 如果您尚未这样做,请提供与步骤 1 中提供的信息相对应的所需结果集。
  • 我知道我在寻找什么。感谢您的考虑。 :)
  • 在这种情况下,您可以提交下面的答案或删除此问题吗?干杯。

标签: mysql join


【解决方案1】:

草莓,没错。我通过在单个销售项目表中添加一个外键来计算它,它帮助我知道无论价格上涨还是下跌,我都能够记录它的价格,这首先是一场噩梦。干杯。谢谢。 ;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多