在SQL中:如何获得按月份分组的两列的百分比
我试图得到SQL中两列每月总和的百分比 假设这些是七月的个人作品在SQL中:如何获得按月份分组的两列的百分比,sql,Sql,我试图得到SQL中两列每月总和的百分比 假设这些是七月的个人作品 Column A | Column B 4 | 10 2 | 8 0 | 0 7 | 12 我想要:13/30=0.43 这就是我的查询 Select sum(Column 1)/sum(Column 2) as 'Current Success %' from Table where Month Code between 110 and 124 group by Month Code 运行此操作时,所有列都读取“0” 我做错
Column A | Column B
4 | 10
2 | 8
0 | 0
7 | 12
我想要:13/30=0.43
这就是我的查询
Select sum(Column 1)/sum(Column 2) as 'Current Success %'
from Table
where Month Code between 110 and 124
group by Month Code
运行此操作时,所有列都读取“0”
我做错了什么?我的第一个猜测是您的SQL版本执行整数除法。试试这个:
select sum(Column 1) * 1.0 /sum(Column 2) as success_ratio
我强烈建议您仅对字符串和日期常量使用单引号,而不要对列的名称使用单引号。我的第一个猜测是您的SQL版本没有整数除法。试试这个:
select sum(Column 1) * 1.0 /sum(Column 2) as success_ratio
我强烈建议您仅对字符串和日期常量使用单引号,而不是列的名称。假设七月的单独记录后面有一列指示每个条目的
日期,那么您可以尝试以下操作,并根据区域设置设置您可以格式化数字输出
SELECT FORMAT(100*SUM(Column A)/SUM(Column B), 'N', 'en-US') AS 'Success Ratio %'
FROM TABLE
GROUP BY MONTH(Entry Date)
或者干脆
SELECT 100*SUM(Column A)/SUM(Column B) AS 'Success Ratio %'
FROM TABLE
GROUP BY MONTH(Entry Date)
甚至更好
SELECT FORMAT(100*SUM(A)/SUM(B), 'N', 'en-US') AS 'Success Ratio %', DATENAME(MONTH,MAX(C)) AS 'MONTH'
FROM mytest
GROUP BY MONTH(C)
在中尝试。假设7月份的单独记录后面有一列,指示每个条目的日期,那么您可以尝试以下操作,并根据区域设置设置您可以格式化数字输出
SELECT FORMAT(100*SUM(Column A)/SUM(Column B), 'N', 'en-US') AS 'Success Ratio %'
FROM TABLE
GROUP BY MONTH(Entry Date)
或者干脆
SELECT 100*SUM(Column A)/SUM(Column B) AS 'Success Ratio %'
FROM TABLE
GROUP BY MONTH(Entry Date)
甚至更好
SELECT FORMAT(100*SUM(A)/SUM(B), 'N', 'en-US') AS 'Success Ratio %', DATENAME(MONTH,MAX(C)) AS 'MONTH'
FROM mytest
GROUP BY MONTH(C)
试试吧。这把它修好了!非常感谢。等等,为什么我不想对列的名称使用单引号?我在工作中学会了SQL,这是我的非程序员团队做事的唯一方式。你能和我分享一下理由吗,这样我就可以把它带回我的团队了?@vaughn42sv。单引号是字符串常量(以及日期)的分隔符。使用单引号来分隔列名是令人困惑的,因为(在某些数据库中)它可能用于定义列。引用该列时,它永远不起作用。这修复了它!非常感谢。等等,为什么我不想对列的名称使用单引号?我在工作中学会了SQL,这是我的非程序员团队做事的唯一方式。你能和我分享一下理由吗,这样我就可以把它带回我的团队了?@vaughn42sv。单引号是字符串常量(以及日期)的分隔符。使用单引号来分隔列名是令人困惑的,因为(在某些数据库中)它可能用于定义列。引用该列时,它从不起作用。