Есть ли функция ROUNDDOWN () в SQL, как в EXCEL - PullRequest
0 голосов
/ 14 февраля 2019

Скажем, у меня есть таблица, которая имеет два столбца, то есть количество и проценты, где мои проценты в десятичных числах.Теперь я хочу умножить эти два столбца и округлить значение до 2 десятичных знаков.Округление вниз означает, что все числа от 1 до 9 округлены в меньшую сторону.Есть ли встроенная функция в SQL для этого, как в Excel?

Примеры:

13.567 should round to 13.56
136.7834 should round to 136.78
0.7699 should round to 0.76

Я пытался найти такую ​​функцию в Интернете, но не смог найти подходящуюрешение.

Ответы [ 4 ]

0 голосов
/ 14 февраля 2019

Решение проблемы состоит в том, чтобы усечь дополнительный десятичный знак, который может быть достигнут с помощью дополнительного параметра функции ROUND, который является ROUND (число, decimal_places, 0/1).Здесь, если последний параметр отличается от 0, он будет усекать, а не округлять, что эквивалентно функции ROUNDDOWN () в Excel, которую я искал.

В качестве альтернативы, вы можете использовать TRUNCATE (), передавая количество десятичных разрядов для хранения в качестве второго параметра, который будет сбрасывать лишние десятичные знаки, действуя как функция ROUNDDOWN ().

0 голосов
/ 14 февраля 2019

да, есть некоторые функции в sql для раунда

ex:

SELECT ProductName, Price, FlOOR(Price) AS RoundedPrice
    FROM Products;
0 голосов
/ 14 февраля 2019

Вы можете использовать TRUNCATE () для этого округления

select TRUNCATE(2.847, 2) as rounddown

или

SELECT Floor(135.675); //for integer rounding, like 135

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

select round(123.456, 2, 1) as rounddown

Третий параметр неноль вызовет усечение после числа десятичных знаков, указанного во втором параметре.

DB Fiddle

https://www.ibm.com/support/knowledgecenter/en/SSEPEK_10.0.0/sqlref/src/tpc/db2z_bif_truncate.html

https://www.w3schools.com/sql/func_sqlserver_floor.asp

0 голосов
/ 14 февраля 2019

Есть функция FLOOR, которую можно адаптировать к вашему случаю использования:

SELECT FLOOR(value * 100) / 100 AS RoundedValue
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...