【问题标题】:SQL Server 2012 query to compute calculations用于计算计算的 SQL Server 2012 查询
【发布时间】:2013-11-22 03:32:46
【问题描述】:

我正在 SQL Server 中构建一个查询,用于计算我们收到的调查分数。我们有一个名为overall_score 的列,用户在其中输入一个1-5 的数字作为评分。我正在尝试创建一个存储过程,该过程将根据分数计算评级。

Score rating = (Total count of scores 4 and 5)/(Total number of responses) * 100

我有三个单独的选择语句来创建我需要的结果,但是当我将它们组合在一起时,我的输出为 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;

【问题讨论】:

    标签: math sql-server-2012


    【解决方案1】:

    你得到零的原因是因为你正在做整数除法。整数除法 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)
    

    SELECT 100.0 * 
           SUM(CASE WHEN overall_score IN (4,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....
    猜你喜欢
    • 2021-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多