mysql - 如何计算两列与结果之间的差异

标签 mysql sql

我可以计算每一行列的利润吗?

SELECT
SUM(CASE WHEN m.billable = 0 THEN r.rate ELSE 0 END) AS Revenue, -- 33 + 34 + 456 + 52...etc = 5500 
    SUM(CASE WHEN m.billable = 1 AND m.optimized = 0 THEN r.rate ELSE 0 END) AS Costs,-- 33 + 4...etc = 339 
    5500 - 339 AS Profit -- I need to get this difference 
    FROM messages AS m
JOIN rates AS r ON (r.id = m.rate_id    )
    GROUP BY
            m.client_account_id,
            m.mcc,
            m.mnc

enter image description here

enter image description here

我想得到

| Revenue | Costs | Profit
   5500      500     5000

最佳答案

将您的查询移动到子查询中,然后减去结果。

SELECT Revenue, Costs, Revenue - Costs AS Profit
FROM (
    SELECT
        SUM(CASE WHEN m.billable = 0 THEN r.rate ELSE 0 END) AS Revenue,
        SUM(CASE WHEN m.billable = 1 AND m.optimized = 0 THEN r.rate ELSE 0 END) AS Costs
    FROM YourTable) AS x

加入你的两个表,并显示按帐户分组的结果,它将是:

SELECT client_account_id, mmc, mnc, Revenue, Costs, Revenue - Costs AS Profit
FROM (
    SELECT
        m.client_account_id, m.mmc, m.mnc
        SUM(CASE WHEN m.billable = 0 THEN r.rate ELSE 0 END) AS Revenue,
        SUM(CASE WHEN m.billable = 1 AND m.optimized = 0 THEN r.rate ELSE 0 END) AS Costs
    FROM messages AS m
    JOIN rates AS r ON r.id = m.rate_id
    GROUP BY m.client_account_id, m.mmc, m.mnc
) AS x

关于mysql - 如何计算两列与结果之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35801257/

相关文章:

php - PDO 事务锁?

mysql - 返回具有特定条件的所有行

SQL:列出多个连接语句中的重复记录?

php - 使用 sql 表中的数据创建 php/html 表的术语,但 php 表值是根据 sql 数据计算的

sql - 查询postgres中的文本数组

sql - 多对多连接表可以有两列以上吗?

php - 尝试使用 Android 和 PHP 插入 MYSQL 时出错

mysql - 使用先前插入的值进行双重插入

php - MySQL队列查询吗?

php - 如何从数据库调用 `id`?