Округление T-SQL до 0,0, 0,5 или 1,0 - PullRequest
4 голосов
/ 13 июля 2011

У меня есть интересная проблема, когда мне нужно округлить результат функции AVG () определенным образом для использования в предложении ORDER BY.

Используются в рейтингах рецептов.

Примеры формул округления:

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

Я запрашиваю список рецептов, и их нужно было заказать так, чтобы рецепт с одним 5-звездочным рейтингом не был заказан выше рецепта со 100 оценками, которые в среднем составляют 4,9. Вторая часть заказа по пунктам - это количество оценок.

Если для этого требуется пользовательская функция, я не совсем уверен, как это сделать.

Ответы [ 2 ]

6 голосов
/ 13 июля 2011
ORDER BY
    CASE WHEN (Num % 1) = .5
        THEN Num
        ELSE ROUND(Num,0)
    END
2 голосов
/ 13 июля 2011

Если я правильно понял, у вас есть звезды и полузвезды?Я бы предложил ORDER BY ROUND(value*2, 0)/2, таким образом он округляется до ближайшего 0.5 (полузвездного) шага.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...