0

例如:-时间(以分钟为单位)

 12.38474
 88.47683
 8.7363
 0.19873

该列的总和不应超过 24 小时。

请考虑上面的“时间”列,其中包含以分钟为单位的数据。如果所有实体的总和小于 24 小时,那很好,但是如果总和大于 24 小时,那么值应该限制为 24 小时,例如总时间<24 小时,那么这很好,但是如果总时间是 24.02 或 24.10,那么值应该是 24 小时只要

你能帮忙改进一下方法吗

select round(cast(  (case when (cast(66.3763731333299 as decimal) % 1000) <> 0
                    then cast((cast((66.3763731333299 / 1000) as int) * 1000) as int) + 1000
                    else 66.3763731333299
                    end) 
                as float) / 60000, 6)

请考虑上面的“时间”列,其中包含以分钟为单位的数据。如果所有实体的总和小于 24 小时,那很好,但是如果总和大于 24 小时,则值应限制为 24 小时,例如总时间<24 小时,那么很好 24.02 或 24.10,则值应仅为 24 小时

4

1 回答 1

0

你只是想要least()吗?

select least(sum(minutes), 24 * 60)
from t;

或者一个case表达式:

select (case when sum(minutes) < 24*60 then sum(minutes else 24*60 end)
from t;
于 2019-12-13T12:18:38.510 回答