此公式中的优先顺序不正确。
我想要做的是计算没有折扣的小计。有人能告诉我我在哪里弄错了吗?
((`p`.`tax_state` + `p`.`tax_fed`) / 100) *
((`p`.`price` * `op`.`quantity`) -
((`p`.`price` * `op`.`quantity`) * `op`.`discount`))
答案 0 :(得分:0)
鉴于税率存储为百分比,但折扣存储为一小部分(以保持一致性!),并注意到反引号确实不是必需的,并且对于可读性非常不利,那么......
(p.price * op.quantity) AS gross_price_exc_tax,
(p.price * op.quantity) * (1 + (p.tax_state + p.tax_fed) / 100)
AS gross_price_inc_tax,
(p.price * op.quantity) * (1 + (p.tax_state + p.tax_fed) / 100) *
(1 - op.discount) AS net_price_inc_tax,
...
这些与您所写的内容非常相似,因此您需要演示您所拥有的输入数据,以及您获得的结果,并且您应该能够解释您所期望的与您所获得的对比。当你期望它是浮点值时,MySQL是否有任何危险将表达式的某些部分视为整数?
你也应该像我一样,一次一个地构建你的表达集,每次分析结果。这可以帮助您更快地发现问题。例如,我可以添加:
(1 + (p.tax_state + p.tax_fed) / 100) AS tax_multiplier
如果它显示为1而不是1.125,或者无论正确的分数是什么,那么我就知道要检查那个表达式,可能会在两个常量上加上小数点。