mysql - SUMMING 条件语句

标签 mysql sql

我有以下查询,它给出了销售额的总和:

SELECT SUM(sales)
FROM 
    (SELECT sales FROM ...) combined

我现在需要在伪代码中添加一个基于某些货币的条件减法,就像这样:

SELECT SUM(sales) - (SUM(sales) IF currency IN ('jpy', 'aud') * 0.05)
FROM 
    (SELECT sales FROM ...) combined

我将如何创建此条件 SUM 或子查询?

最佳答案

您可以在求和时应用因子:

SELECT SUM(CASE WHEN currency IN ('jpy', 'aud') 
                THEN sales * 0.95
                ELSE sales
            END)
FROM combined

CASE有两种形式。这个检查 WHEN 之后给出的 bool 表达式是否为真。如果是,它返回按比例减少 5% 的销售额;如果不是,则在 ELSE 之后返回表达式。您可以组合 WHEN...THEN 对。第一个计算结果为 true 的返回 THEN 之后的表达式。

您可能已经按照问题中的建议完成了此操作,方法是从 JPY 和 AUD 中减去 TAX,如下所示:

SELECT SUM(sales) 
     - ifnull (SUM(CASE WHEN currency IN ('jpy', 'aud') 
                        THEN sales * 0.05
                    END), 0)
FROM combined

但这对查询没有任何帮助。

关于mysql - SUMMING 条件语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10873284/

相关文章:

mysql - 如果数据存在,则 Form_validation 未运行

mysql - 错误: Subquery returns more than 1 row when trying to insert variables into multiple rows from 2 tables MYSQL

sql - 将 "group by"查询中的值插入到另一个表中

sql - 正则表达式匹配具有多行和相同列数的 SQL 值字符串

sql - 数据库触发器比查询慢吗?

MYSQL 如果用户喜欢某个状态,则将其包含在查询结果中

php - 在 SQL 查询中更改 PHP 变量的最有效方法?

sql - SQL 报告中的多个图表

mysql - 选择不包含特定内容字段的 ID

php - 如何在启动应用程序之前检查 Facebook 用户 ID 是否已经存在?