Chr*_*nch 13 mysql sql sum case
SELECT
SUM(
CASE
WHEN cumulative = 1
THEN percent
ELSE 0
END)
FROM phppos_items_taxes;
Run Code Online (Sandbox Code Playgroud)
鉴于上述声明,请执行以下操作:
mysql> select * FROM phppos_items_taxes;
+---------+-----------+---------+------------+
| item_id | name | percent | cumulative |
+---------+-----------+---------+------------+
| 1 | Tax 1 | 8.00 | 0 |
| 1 | Tax 2 | 10.00 | 1 |
| 3 | Sales Tax | 8.00 | 0 |
| 4 | Tax 1 | 20.00 | 0 |
| 4 | Tax 2 | 20.00 | 0 |
+---------+-----------+---------+------------+
Run Code Online (Sandbox Code Playgroud)
这是累计= 1的每一行的累计百分比.如果累积!= 1则将0加总.
She*_*hef 28
是的,它确实!更简洁更清晰的查询(恕我直言)将使用IF
声明:
SELECT SUM(IF(cumulative = 1, `percent`, 0)) FROM phppos_items_taxes;
Run Code Online (Sandbox Code Playgroud)
为什么不过滤掉物品?
SELECT
SUM(ISNULL(percent, 0))
FROM
phppos_items_taxes
WHERE
cumulative = 1
Run Code Online (Sandbox Code Playgroud)
在你的情况下,将选择每一行并且CASE
必须应用语句,我相信使用WHERE
过滤器会明显更快,因为WHERE子句在SELECT子句之前执行