Округлите до следующего целого числа, если оно содержит десятичную точку (в SQL Oracle)

#sql #oracle

Вопрос:

Мне нужно извлечь поле из таблицы и отобразить результаты, округленные до следующего целого числа, если оно еще не целое.

Например:

У меня в таблице указаны часы работы на местах.

Мне нужно создать следующую логику.

 If working hours/15 equals to 4.01 or whatever grater 4.0 then round to 5
 

В противном случае выберите как есть (4.0).

Комментарии:

1. Используйте ceil() функцию, которая реализована как в Oracle, так и в MySQL. Функция раньше называлась «округление» в математике; я считаю, что плохая привычка называть ее «ceil[ing]» (и аналогично «этаж» для «округления») распространена только в вычислительных кругах, а не в математике.

2. Пожалуйста, добавьте образец и желаемые данные. (не изображение)

3. Вы подключили 2 разные базы данных. Который из них твой?

4. @mathguy Я почти уверен, что мы использовали пол и потолок, когда я сдавал экзамены по математике и получал степень. Имейте в виду, это было ~25 лет назад, и с тех пор язык вполне мог измениться

5. @Boneist — тогда я занимался математикой до тебя. Возможно, язык изменился до того, как вы сделали свое. Но я ушел из математики (собираюсь заняться другими делами) всего 20 лет назад, и — по крайней мере, в моих кругах — мы никогда не использовали «потолок» для «округления». И, как назло, у меня было много «облав» в моей очень специфической области исследований, поэтому я знаю, какая терминология использовалась очень большим количеством математиков.

Ответ №1:

Это то, чего ты хочешь?

 

with t (n) as (
  select 17.813 from dual
  union all select 20.126 from dual
  union all select 1.000 from dual
  union all select 1.001 from dual
  union all select 1.005 from dual
  union all select 1.009 from dual
  union all select 1.010 from dual
  union all select -1.000 from dual
  union all select 0 from dual
  union all select -1.001 from dual
  union all select -1.005 from dual
  union all select -1.009 from dual
  union all select -1.010 from dual
)
select n, ceil(n) as next_num
from t;

  
N   NEXT_NUM
17.813  18
20.126  21
1   1
1.001   2
1.005   2
1.009   2
1.01    2
-1  -1
0   0
-1.001  -1
-1.005  -1
-1.009  -1
-1.01   -1

 

Комментарии:

1. Да, работал на меня! Спасибо вам всем