Как отобразить значение функции AVG до двух знаков после запятой в SQL? - PullRequest
0 голосов
/ 19 мая 2018
select avg(purch_amt) from orders;

Я взял среднее из сумм, и оно показывает значение до многих знаков после запятой, и я хотел бы ограничить его до двух знаков после запятой.Вот что я попробовал: - select cast(avg(purch_amt) as decimal(10,2)) from orders; ответьте, пожалуйста, содержащий обе операции (сначала среднее, а затем преобразование).Я хотел бы знать правильный синтаксис написания обоих операторов вместе .

Ответы [ 3 ]

0 голосов
/ 19 мая 2018

Вы можете использовать ROUND как

SELECT ROUND(AVG(purch_amt), 2) AS 'Average' from orders

или если вы хотите округлить все значения столбца перед вычислением среднего

SELECT AVG(ROUND(purch_amt, 2)) AS 'Average' from orders
0 голосов
/ 19 мая 2018

Мой предпочтительный метод - привести к соответствующему десятичному значению:

select cast(avg(purch_amt) as decimal(10, 2))
from orders;

Это немного отличается от round(), хотя оба обычно дают один и тот же результат.Как объясняется в документации для round():

Возвращаемое значение имеет тот же тип, что и первый аргумент (при условии, что оно является целым, двойным или десятичным)

Это означает, что то, что отображается в приложении, может по-прежнему показывать больше (или меньше), чем количество десятичных знаков.Изменяя тип, приложение будет знать, сколько десятичных знаков должно быть в результате.

Из этого примера видно, что round() не меняет тип данных - следовательноэто может не изменить представление в инструменте.

0 голосов
/ 19 мая 2018

Вы можете обновить свой запрос до:

select ROUND (avg(purch_amt),2) as Average from orders;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...