T-SQL舍入为0.0,0.5或1.0

时间:2011-07-13 17:12:58

标签: sql tsql sql-order-by rounding

我有一个有趣的问题,我需要以特定的方式对AVG()函数的结果进行舍入,以便在ORDER BY子句中使用。

这些用于配方评级。

舍入公式的示例:

1.2 -> 1
1.4 -> 1
1.5 -> 1.5
1.6 -> 2
1.9 - >2

我正在查询食谱清单,他们需要订购,以便订购一个五星评级的食谱不会在100个评级平均为4.9的食谱上方订购。 order by子句的第二部分是评级计数。

如果这需要用户定义的功能,我不太清楚如何去做。

2 个答案:

答案 0 :(得分:6)

ORDER BY
    CASE WHEN (Num % 1) = .5
        THEN Num
        ELSE ROUND(Num,0)
    END

答案 1 :(得分:2)

如果我理解正确,你有星星和半星? 我建议ORDER BY ROUND(value*2, 0)/2,这样就可以转到最接近0.5(半星)的步骤。