select avg(purch_amt) from orders;
Я взял среднее количество и показывает значение до нескольких десятичных знаков, и я хотел бы ограничить его до двух знаков после запятой. Вот что я пробовал: - select cast(avg(purch_amt) as decimal(10,2)) from orders;
пожалуйста, ответьте, содержащий как операции (первое среднее, так и преобразование). Я хотел бы знать правильный синтаксис для написания обоих утверждений вместе.
Вы можете обновить свой запрос до:
select ROUND (avg(purch_amt),2) as Average from orders;
Мой предпочтительный метод заключается в том, чтобы использовать соответствующее десятичное значение:
select cast(avg(purch_amt) as decimal(10, 2))
from orders;
Это немного отличается от round()
, хотя оба обычно дают одинаковый результат. Как поясняет документация для round()
:
Возвращаемое значение имеет тот же тип, что и первый аргумент (при условии, что он является целым, двойным или десятичным)
Это означает, что то, что отображается в приложении, может по-прежнему показывать больше (или меньше) числа десятичных знаков. Изменив тип, приложение будет знать, сколько десятичных разрядов должно быть в результате.
Из этого примера видно, что round()
не меняет тип данных - следовательно, это может не изменить представление в инструменте.
Вы можете использовать ROUND как
SELECT ROUND(AVG(purch_amt), 2) AS 'Average' from orders
или если вы хотите округлить все значения столбцов до вычисления среднего значения
SELECT AVG(ROUND(purch_amt, 2)) AS 'Average' from orders