繁体   English   中英

在MySQL中具有条件的SELECT SUM()

[英]SELECT SUM() with conditions in mysql

假设我有

SELECT `Type`, `Originating Country Code`,`Originating Currency Code`, SUM(`Principal Amount`) as Total 
FROM `colab` 
WHERE (`Destination Country Code`='PH' 
    AND `Destination Currency Code`='PHP'
    AND `Type` = 'PAID') || (`Destination Country Code`='PH' 
    AND `Destination Currency Code`='USD'
    AND `Type`= 'PAID')
    GROUP BY `Type`

正常工作并返回true,请参见下文

country_code | Currency_Code  |   Type    |  Principal

=======================================================
| PH         |   PHP          |    PAID   |    200
=======================================================

我的问题是我想将货币的本金总额与美元值分开。 请查看我数据库中的记录

country_code | Currency_Code  |   Type    |  Principal

=======================================================
| PH         |   PHP          |    PAID   |    100
| PH         |   USD          |    PAID   |    100
=======================================================

试试这个查询:

SELECT `Currency_Code`, SUM(`Principal Amount`) as Total 
FROM `table`
GROUP BY `Currency_Code`

您可以像这样使用GROUP BY

SELECT `Currency_Code`, SUM(`Principal Amount`) as Total 
FROM `table` 
WHERE `Country Code`='PH'
    AND `Type` LIKE '%W%'
GROUP BY `Currency_Code`

如果要添加更多条件,只需使用ANDOR将更多部分添加到WHERE子句中AND例如:

SELECT `Currency_Code`, SUM(`Principal Amount`) as Total 
FROM `table` 
WHERE `Country Code`='PH'
    AND `Type` LIKE '%W%'
    AND `Currency_Code` IN('USD', 'CAD', 'YEN')
    AND `Principal_Amount` > 10
GROUP BY `Currency_Code`

您需要使用GROUP BY

SELECT `Currency Code`, SUM(`Principal Amount`) as Total 
FROM `table` 
WHERE `Country Code`='PH' 
    AND `Type` LIKE '%W%'
GROUP BY `Currency Code`

难道您只是根据自己的需求更改查询?? 我的意思是从您的预期结果中推断出您需要基于Type或country_code的结果,因此从查询中删除“ AND Currency Code ='PHP'”将为您提供预期的结果。

将您的条件分解为一个子查询,然后对它进行联接。 只需添加任意数量的规则即可。

SELECT `Country Code`, `Currency Code`, `Type`,
       SUM(`Principal Amount`) as Total 
FROM `table` 
JOIN (
    SELECT 'PH' as a, 'PHP' as b, '%W%' as c
    UNION SELECT 'PH', 'USD', '%W%'
    UNION SELECT 'PY', 'PYC', '%H%'
) AS criteria
    ON (`table`.`Country Code` = criteria.a and
        `table`.`Currency Code` = criteria.b and
        `table`.`Type` like criteria.c)
GROUP BY `Country Code`, `Currency Code`, `Type`

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM