Упражнение 53 (подсказки и решения)

Вот решение, в котором сделана попытка выполнить округление:

SELECT CAST(ROUND(AVG(numguns), 2) AS DECIMAL(10,2)) Avg_numGuns
FROM Classes
WHERE type = 'bb';
mssql
🚫
[[ error ]]
[[ column ]]
[[ value ]]

Попытка неудачная, так как округление, как и последующее приведение к типу DECIMAL (впрочем, совершенно излишнее в данном контексте), уже применяется к значению целого типа. В результате получить удается не более чем два нуля после десятичной точки.

Проблема заключается в том, что AVG(numguns) применяется к аргументу целого типа, поэтому и результат приводится к целому, причем дробная часть не округляется, а отбрасывается, что является особенностью SQL Server, и не является общим правилом.

Вернуться к обсуждению упражнения 53

Решить задачу на SQL-EX.RU