我想我计算每个仓库的总收入是错误的
Posted
技术标签:
【中文标题】我想我计算每个仓库的总收入是错误的【英文标题】:I think I'm calculating the total revenue from each warehouse wrong 【发布时间】:2021-05-01 21:41:59 【问题描述】:我有一个问题正在解决,我希望有人仔细检查我的代码,因为我正在尝试计算数据库中每个仓库的收入并且返回值似乎很高 - 它返回数十个数以百万计的大多数仓库。不是不可能的高,但足以让我再看一眼。
Here is the ER diagram
这是我的代码:
SELECT WAREHOUSES.WAREHOUSE_ID, WAREHOUSES.WAREHOUSE_NAME, SUM(ORDER_ITEMS.QUANTITY *
PRODUCTS.LIST_PRICE) AS TOTAL
FROM WAREHOUSES
JOIN INVENTORIES ON INVENTORIES.WAREHOUSE_ID = WAREHOUSES.WAREHOUSE_ID
JOIN PRODUCTS ON PRODUCTS.PRODUCT_ID = INVENTORIES.PRODUCT_ID
JOIN ORDER_ITEMS ON PRODUCTS.PRODUCT_ID = ORDER_ITEMS.PRODUCT_ID
GROUP BY WAREHOUSES.WAREHOUSE_NAME, WAREHOUSES.WAREHOUSE_ID
ORDER BY TOTAL DESC;
我的 SUM 有问题吗?我是 SQL 新手,所以我相信您会发现此代码有很多调整 - 我很想听听!
谢谢!
【问题讨论】:
这里的“收入”是什么意思?收入通常是指所有已售商品价值的总和,在这种情况下,您几乎可以肯定需要包含orders
表,并且按仓库分组显然没有意义,因为我看不到确定的方法哪个仓库提供了历史订单上的哪些项目。如果您按仓库分组,我猜您确实会按仓库查找库存值,在这种情况下加入order_items
可能是不正确的。 product
表上已有 standard_cost
和 list_price
。
样本数据和所需结果会有所帮助,最好简化为易于管理的示例。
【参考方案1】:
您正在计算仓库内每种产品的总销售额。然后在仓库级别添加它们。
我不认为这是有用的。而且这绝对是高估了销售额。
我不知道仓库级别的“收入”是什么意思。数据模型似乎没有任何迹象表明哪个仓库为给定订单提供了产品。
我最好的猜测是“收入”是指“潜在收入”。也就是说,对于仓库中库存的所有产品,如果以全价出售,可以产生多少收入?
作为提示:此计算与订单或订单线无关。它只需要在产品和库存之间进行计算。
【讨论】:
【参考方案2】:查询看起来没问题,但我认为 order_items.unit_price
反映了实际支付的价格,因此反映了销售收入。
这里稍微整理了一下。我对表名使用别名,而不是重复整个名称。对于如何布局 SQL,尤其是连接子句,意见各不相同,但对我来说,这比大写文本的整体块效果更好。
select w.warehouse_id
, w.warehouse_name
, sum(oi.quantity * oi.unit_price) as total
from warehouses w
join inventories i on i.warehouse_id = w.warehouse_id
join products p on p.product_id = i.product_id
join order_items oi on p.product_id = oi.product_id
group by w.warehouse_name, w.warehouse_id
order by total desc;
您可以通过在select
列表和group by
子句中包含它们的ID 并确认它给出了预期的总数来检查一个订单、一个产品或一个仓库的结果。示例数据在这里会有所帮助。
【讨论】:
以上是关于我想我计算每个仓库的总收入是错误的的主要内容,如果未能解决你的问题,请参考以下文章