Math 用于计算计算的SQL Server 2012查询
我正在SQL Server中构建一个查询,用于计算我们收到的调查分数。我们有一个名为Totall_score的列,其中用户输入1-5之间的数字作为评分。我试图创建一个存储过程,根据分数计算评分Math 用于计算计算的SQL Server 2012查询,math,sql-server-2012,Math,Sql Server 2012,我正在SQL Server中构建一个查询,用于计算我们收到的调查分数。我们有一个名为Totall_score的列,其中用户输入1-5之间的数字作为评分。我试图创建一个存储过程,根据分数计算评分 Score rating = (Total count of scores 4 and 5)/(Total number of responses) * 100 我有三个单独的select语句来创建我需要的结果,但是当我将它们组合在一起时,我的输出是0 有人能告诉我我做错了什么吗 单独的SQL语句: S
Score rating = (Total count of scores 4 and 5)/(Total number of responses) * 100
我有三个单独的select语句来创建我需要的结果,但是当我将它们组合在一起时,我的输出是0
有人能告诉我我做错了什么吗
单独的SQL语句:
SELECT count(overall_score) FROM Layer1_DataMerge WHERE overall_score = 4;
SELECT count(overall_score) FROM Layer1_DataMerge WHERE overall_score = 5;
SELECT count(overall_score) FROM Layer1_DataMerge;
结合起来:
SELECT distinct
(
(
(SELECT count(overall_score) FROM Layer1_DataMerge WHERE Overall_Score = 4) +
(SELECT count(overall_score) FROM Layer1_DataMerge WHERE overall_score = 5)
) / (SELECT count(overall_score) FROM Layer1_DataMerge)
) AS CSAT
FROM Layer1_DataMerge;
你得到零的原因是因为你在做整数除法。整数除法1/3=0。您需要将其转换为浮点算术,并且可以在一个查询中完成所有操作:
SELECT 100.0 *
(SUM(CASE WHEN overall_score = 4 THEN 1 ELSE 0 END) +
SUM(CASE WHEN overall_score = 5 THEN 1 ELSE 0 END)) /
COUNT(overall_score)
或
要仅显示2个小数,您可以将其转换为具有2个小数的数字类型:
SELECT CAST(
100.0 *
SUM(CASE WHEN overall_score IN (4,5) THEN 1 ELSE 0 END) /
COUNT(overall_score)
AS NUMERIC(5,2))
或使用STR转换为字符串:
SELECT STR(
100.0 *
SUM(CASE WHEN overall_score IN (4,5) THEN 1 ELSE 0 END) /
COUNT(overall_score)
,5,2)
令人惊叹的!这很有效,非常感谢。现在我唯一的问题是我不能得到正确的小数位数。我认为结果只会显示你在乘数中的小数位数。当我使用100.0或100.00时,我仍然得到相同的答案0.62044589450,我只希望它显示0.62。。。。
SELECT STR(
100.0 *
SUM(CASE WHEN overall_score IN (4,5) THEN 1 ELSE 0 END) /
COUNT(overall_score)
,5,2)