Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL中:如何获得按月份分组的两列的百分比_Sql - Fatal编程技术网

在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” 我做错

我试图得到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”


我做错了什么?

我的第一个猜测是您的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。单引号是字符串常量(以及日期)的分隔符。使用单引号来分隔列名是令人困惑的,因为(在某些数据库中)它可能用于定义列。引用该列时,它从不起作用。