我有一个包含services for invoices
的mysql表。
看起来像
servicename|ammount|price|tag(type of service)|discount(service worthy of discount, true or false)|clientDiscount(client worthy of discount, true or false)
我需要进行groups by year
,sums(amount * price)
但是,如果discount
和clientDiscount
为true
,我需要计入discount of 15%
我尝试了案例和if statements
,但没有任何作用。我不是真的
知道女巫到底要开始了。说实话,我无法理解案件和陈述的运作方式。我想我需要制作一个包含折扣真实和客户折扣真实的服务的总和,然后另一个包括没有折扣的服务的总和,并添加这些upp以获得正确的金额?现在它就像我脑中的蚂蚁农场。
答案 0 :(得分:1)
你想要这个:
select year(invoicedate), sum(amount * price * if(discount and clientdiscount, 0.85, 1)) total
from invoices
group by year(invoicedate);
if
语句的工作原理如下。 if(condition, value-if-true, value-if-false)
。因此,在您的示例中,如果discount and clientdiscount
为真(即它们均为1),则会返回您的折扣金额15%
(X
的折扣与乘以{相同{1}})。如果条件为false,则返回1 - X
,这不会修改1
的结果。总而言之,在处理amount * price
后,if
变为:
sum
OR
sum(amount * price * 0.85) -- if discount and client discount are both 1
答案 1 :(得分:0)
您可以在没有if
的情况下对其进行汇总。 discount
和clientdiscount
是整数,因此您可以简单地将其乘以折扣百分比。稍微修改过的@pala脚本:
select year(invoicedate), sum(amount * price * (1 - discount * clientdiscount * 0.15)) total
from invoices
group by year(invoicedate);