删除查询中的零金额
Remove zero amount in a query
我有一个 table 包含以下列和数据的 finalData
| Code | Country | City | Area | Amount | Date |
| 4000 | Singapore | Singapore | 1 | 150000.00 | 2020-11-30 |
| 4004 | Singapore | Singapore | 1 | 355000.00 | 2020-11-30 |
| 4005 | Singapore | Singapore | 2 | 0.00 | 2020-11-30 |
| 5001 | Singapore | Singapore | 1 | 13600.00 | 2020-11-30 |
我正在创建 mysql 查询以显示新加坡每个地区的收入和支出,但我必须排除金额为零的地区。这是我试过的代码:
Select fd.Area as area,
FORMAT((Select IFNULL(SUM(Amount),0) from finalData Where Code LIKE '4%' AND fd.City=finalData.City AND finalData.Area=fd.Area),2) as Revenue,
FORMAT((Select IFNULL(SUM(Amount),0) from finalData Where Code LIKE '5%' AND fd.City=finalData.City AND fd.Area=finalData.Area),2) as Expense
from finalData fd WHERE fd.Date BETWEEN '2020-11-30' AND '2020-11-30' AND fd.City='Singapore' AND fd.Amount <>0 GROUP BY fd.Area
输出应该是这样的
| Area | Revenue | Expense |
| 1 | 505,000.00 | 13,600.00 |
如有任何帮助,我们将不胜感激。
谢谢
这个逻辑用条件聚合来表述会更简单。至于过滤掉 0
金额,我推测您只想要一个 where
子句:
select area,
sum(case when code like '4%' then amount else 0 end) as revenue,
sum(case when code like '5%' then amount else 0 end) as expense
from finaldata fd
where fd.city = 'Singapore' and amount <> 0
group by area
另一方面,如果您想过滤两个金额中的一个,则可以使用 having
子句。假设您要过滤掉 0
收入,而不考虑费用,则可以在代码末尾添加以下表达式:
having revenue <> 0
我有一个 table 包含以下列和数据的 finalData
| Code | Country | City | Area | Amount | Date |
| 4000 | Singapore | Singapore | 1 | 150000.00 | 2020-11-30 |
| 4004 | Singapore | Singapore | 1 | 355000.00 | 2020-11-30 |
| 4005 | Singapore | Singapore | 2 | 0.00 | 2020-11-30 |
| 5001 | Singapore | Singapore | 1 | 13600.00 | 2020-11-30 |
我正在创建 mysql 查询以显示新加坡每个地区的收入和支出,但我必须排除金额为零的地区。这是我试过的代码:
Select fd.Area as area,
FORMAT((Select IFNULL(SUM(Amount),0) from finalData Where Code LIKE '4%' AND fd.City=finalData.City AND finalData.Area=fd.Area),2) as Revenue,
FORMAT((Select IFNULL(SUM(Amount),0) from finalData Where Code LIKE '5%' AND fd.City=finalData.City AND fd.Area=finalData.Area),2) as Expense
from finalData fd WHERE fd.Date BETWEEN '2020-11-30' AND '2020-11-30' AND fd.City='Singapore' AND fd.Amount <>0 GROUP BY fd.Area
输出应该是这样的
| Area | Revenue | Expense |
| 1 | 505,000.00 | 13,600.00 |
如有任何帮助,我们将不胜感激。 谢谢
这个逻辑用条件聚合来表述会更简单。至于过滤掉 0
金额,我推测您只想要一个 where
子句:
select area,
sum(case when code like '4%' then amount else 0 end) as revenue,
sum(case when code like '5%' then amount else 0 end) as expense
from finaldata fd
where fd.city = 'Singapore' and amount <> 0
group by area
另一方面,如果您想过滤两个金额中的一个,则可以使用 having
子句。假设您要过滤掉 0
收入,而不考虑费用,则可以在代码末尾添加以下表达式:
having revenue <> 0