Упражнение 53 (подсказки и решения)
Упражнение 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, и не является общим правилом.