Упражнение 53 (подсказки и решения)
Упражнение 53 (подсказки и решения)
Вот решение, в котором сделана попытка выполнить округление:
SELECT CAST(ROUND(AVG(numguns), 2) AS DECIMAL(10,2)) Avg_numGuns
FROM Classes
WHERE type = 'bb';🚫
[[ error ]]
| [[ column ]] |
|---|
| NULL [[ value ]] |
Попытка неудачная, так как округление, как и последующее приведение к типу DECIMAL (впрочем, совершенно излишнее в данном контексте), уже применяется к значению целого типа. В результате получить удается не более чем два нуля после десятичной точки.
Проблема заключается в том, что AVG(numguns) применяется к аргументу целого типа, поэтому и результат приводится к целому, причем дробная часть не округляется, а отбрасывается, что является особенностью SQL Server, и не является общим правилом.