【问题标题】:sum if condition true, subtract if false mysqlite如果条件为真,求和,如果为假,则减去
【发布时间】:2015-08-26 22:35:40
【问题描述】:

我在我的应用程序中使用 mysqlite,但遇到以下问题: 我有一个包含“名称”、“值”和“条件”列的表,我想查询不同的名称和这个名称的值的总和。但是有一个条件:我只想对 'condition' = 1 的名称求和,如果 'condition' = 0,我想减去该值。

【问题讨论】:

标签: mysql sql select sum


【解决方案1】:

试试这个:

SELECT name, SUM(((condition * 2) - 1) * value)
FROM tablename
GROUP BY name

如果条件为1,请注意(condition * 2) - 1) 如何计算为1,如果条件为0,则为-1,从而产生您需要的输出。

【讨论】:

  • 这隐含地假定condition 只能有0s 和1s。我不确定是否可以假设这一点。
【解决方案2】:

您可以构造一个case 表达式来做到这一点:

SELECT   name, SUM(CASE condition WHEN 1 THEN value
                                  WHEN 0 THEN value * (-1))
FROM     mytable
GROUP BY name                           

【讨论】:

    猜你喜欢
    • 2022-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    • 1970-01-01
    • 2021-02-26
    • 2020-06-25
    • 2012-03-11
    相关资源
    最近更新 更多