mysql - 对一组 SUMS 求和

标签 mysql sql sum

我在创建已包含 SUMS 的代码中的两行 SUM 时遇到问题。我最终遇到了一个错误。有人可以帮我解决代码吗?我想要的计算是 SUM(yr_L/yr_CC)。我意识到我不能使用别名来进行计算,但我似乎无法让它工作。

下面的作品,没有复杂的 SUM 计算线......

SELECT
IF (Artist LIKE '%Bethel%' , 'Bethel', NULL ) as Artist,
COUNT(IF(CCD > 0,1,NULL)) as "c_CC",
ROUND(SUM(CC28) / COUNT(IF(CCD > 0,1,NULL)) * 13,0) as yr_CC,
COUNT(IF(LD > 0,1,NULL)) as c_L,
ROUND(SUM(L28) / COUNT(IF(LD > 0,1,NULL)) * 13,0) as yr_L,
COUNT(IF(FD > 0,1,NULL)) as c_F,
ROUND(SUM(F28) / COUNT(IF(FD > 0,1,NULL)) * 13,0) as yr_F,
COUNT(IF(MTD > 0,1,NULL)) as c_MT,
ROUND(SUM(MT28) / COUNT(IF(MTD > 0,1,NULL)) * 13,0) as yr_MT,
ROUND(SUM(CC28) / COUNT(IF(CCD > 0,1,NULL)) * 13,0) +
    ROUND(SUM(L28) / COUNT(IF(LD > 0,1,NULL)) * 13,0) +
    ROUND(SUM(MT28) / COUNT(IF(MTD > 0,1,NULL)) * 13,0) +
    ROUND(SUM(CC28) / COUNT(IF(CCD > 0,1,NULL)) * 13,0)
    AS yr_Total
FROM praisecharts_reporting.large_sales_report
GROUP BY 1

这是我所做的导致错误的事情(我添加的方程周围有空格):

SELECT
IF (Artist LIKE '%Bethel%' , 'Bethel', NULL ) as Artist,
COUNT(IF(CCD > 0,1,NULL)) as "c_CC",
ROUND(SUM(CC28) / COUNT(IF(CCD > 0,1,NULL)) * 13,0) as yr_CC,
COUNT(IF(LD > 0,1,NULL)) as c_L,
ROUND(SUM(L28) / COUNT(IF(LD > 0,1,NULL)) * 13,0) as yr_L,

SUM (
        (
            SUM(L28) / COUNT(IF(LD > 0,1,NULL)) -- yr_L
        ) / 
        (
            SUM(CC28) / COUNT(IF(CCD > 0,1,NULL)) -- yr_CC
        )
    )
    AS r_L_C,

COUNT(IF(FD > 0,1,NULL)) as c_F,
ROUND(SUM(F28) / COUNT(IF(FD > 0,1,NULL)) * 13,0) as yr_F,
COUNT(IF(MTD > 0,1,NULL)) as c_MT,
ROUND(SUM(MT28) / COUNT(IF(MTD > 0,1,NULL)) * 13,0) as yr_MT,
ROUND(SUM(CC28) / COUNT(IF(CCD > 0,1,NULL)) * 13,0) +
    ROUND(SUM(L28) / COUNT(IF(LD > 0,1,NULL)) * 13,0) +
    ROUND(SUM(MT28) / COUNT(IF(MTD > 0,1,NULL)) * 13,0) +
    ROUND(SUM(CC28) / COUNT(IF(CCD > 0,1,NULL)) * 13,0)
    AS yr_Total
FROM praisecharts_reporting.large_sales_report
GROUP BY 1

最佳答案

这里最简单的事情可能就是重复这两个和来求商:

SELECT
    IF (Artist LIKE '%Bethel%' , 'Bethel', NULL) AS Artist,
    COUNT(IF(CCD > 0,1,NULL)) AS "c_CC",
    ROUND(SUM(CC28) / COUNT(IF(CCD > 0,1,NULL)) * 13, 0) AS yr_CC,
    COUNT(IF(LD > 0,1,NULL)) as c_L,
    ROUND(SUM(L28) / COUNT(IF(LD > 0,1,NULL)) * 13,0) as yr_L,
    COUNT(IF(FD > 0,1,NULL)) as c_F,
    ROUND(SUM(F28) / COUNT(IF(FD > 0,1,NULL)) * 13,0) as yr_F,
    COUNT(IF(MTD > 0,1,NULL)) as c_MT,
    ROUND(SUM(MT28) / COUNT(IF(MTD > 0,1,NULL)) * 13,0) as yr_MT,
    ROUND(SUM(CC28) / COUNT(IF(CCD > 0,1,NULL)) * 13,0) +
        ROUND(SUM(L28) / COUNT(IF(LD > 0,1,NULL)) * 13,0) +
        ROUND(SUM(MT28) / COUNT(IF(MTD > 0,1,NULL)) * 13,0) +
        ROUND(SUM(CC28) / COUNT(IF(CCD > 0,1,NULL)) * 13,0) AS yr_Total,
    -- new code here:
    ROUND( (SUM(L28) / COUNT(IF(LD > 0,1,NULL))) /
           (SUM(CC28) / COUNT(IF(CCD > 0,1,NULL))), 0) AS new_column
FROM praisecharts_reporting.large_sales_report
GROUP BY 1;

关于mysql - 对一组 SUMS 求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49526973/

相关文章:

mysql - SQL 将作者/故事关系从 Drupal 迁移到 WordPress

php - 未找到 ActiveRecord\MysqliAdapter

MySQL主从复制 "Unknown database"错误

mysql - 日期编码问题

sql - 如何处理 AWS Athena 中同一列中只有日期 (%m-%d-%Y) 和日期时间 ('%m-%d-%Y %H:%i' 记录的列?

MySQL 合并来自相同方案表的 UNION 的结果

c++ - 配置:错误:找不到MySQL包含目录

SQL计算病假天数

mySQL - 将 id 传递给嵌套查询

python - 给出一个 nums 列表...每 2 个数字相加(例如 : 1, 2,3,4 -> 3, 7)?