Mysql;将查询中的if-else条件和结果添加到新变量
我有两个表,即供应商和产品 供应商: 身份证件 按“订单”和“产品”枚举的费用 每种产品的额外费用 每份订单的费用 产品切割: 费用 msrp 每种产品的费用 供应商id 我想看看利润率小于100和大于50的所有产品 我的项目中计算利润的公式为:Mysql;将查询中的if-else条件和结果添加到新变量,mysql,zend-db,Mysql,Zend Db,我有两个表,即供应商和产品 供应商: 身份证件 按“订单”和“产品”枚举的费用 每种产品的额外费用 每份订单的费用 产品切割: 费用 msrp 每种产品的费用 供应商id 我想看看利润率小于100和大于50的所有产品 我的项目中计算利润的公式为: If(Vendors.charges_by=='Order') then Vendor Fees = Products.Cost + Vendors.fee_per_order + Vendors.extra_fee_per_produc
If(Vendors.charges_by=='Order') then
Vendor Fees = Products.Cost + Vendors.fee_per_order +
Vendors.extra_fee_per_product
ElSE IF(Vendors.charges_by=='Product') then Vendor Fees = Products.Cost +
Vendors.fee_per_product + Vendors.extra_fee_per_product
Gross Profit = Products.msrp - Vendor Fees
现在我们计算毛利润=
Margin = (Gross Profit / MSRP) * 100
我已经在一个列表中实现了搜索,我想在MySQL的一个查询中看到这些记录,你在找这个吗
SELECT (msrp - if(Vendors.charges_by=='Order',Products.Cost + Vendors.fee_per_order +
Vendors.extra_fee_per_product,Products.Cost +
Vendors.fee_per_product + Vendors.extra_fee_per_product)/ msrp )*100 as `Margin`
FROM Vendors
INNER JOIN Prodcuts ON Vendors.id = Prodcuts.vendor_id
试试这个……祝你好运 给你:
SELECT prod_id, (((msrp + 0.0) - (
CASE
WHEN v.charges_by = 'Order'
THEN p.cost + v.fee_per_order + v.extra_fee_per_product
WHEN v.charges_by = 'Product'
THEN p.cost + p.fee_per_product + v.extra_fee_per_product
END
)) / msrp) * 100 AS Margin
FROM Vendors v
INNER JOIN Products p
ON v.id = p.vendor_id
HAVING Margin BETWEEN 10 AND 100
工作小提琴:
这里的关键部分是msrp+0.0,它将计算视为浮点值而不是数字
SELECT prod_id, (((msrp + 0.0) - (
CASE
WHEN v.charges_by = 'Order'
THEN p.cost + v.fee_per_order + v.extra_fee_per_product
WHEN v.charges_by = 'Product'
THEN p.cost + p.fee_per_product + v.extra_fee_per_product
END
)) / msrp) * 100 AS Margin
FROM Vendors v
INNER JOIN Products p
ON v.id = p.vendor_id
HAVING Margin BETWEEN 10 AND 100